这个很有趣。我有一个下拉列表,一旦选择就可以运行数据调用,返回数据并在页面上填充了一些标签。这是问题:
如果我输入选择并点击Enter,则该方法会触发一次,就很好。如果我使用鼠标滚动到选择并以这种方式选择,它将发射两次。
<asp:DropDownList ID="ddlPattern" CssClass="dropdownint" runat="server" DataTextField="Pattern" DataValueField="Pattern"
AppendDataBoundItems="true" AutoPostBack="true" OnSelectedIndexChanged="ddPattern_SelectedIndexChanged" EnableViewState="true" />
代码背后:
SqlDataAdapter sda = new SqlDataAdapter("StoredProcedure", sc);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.AddWithValue("@Pattern", Pattern.ToString());
sda.SelectCommand.Parameters.AddWithValue("@fac", this.ddfac.SelectedItem.Value);
DataSet ds = new DataSet();
sda.Fill(ds);
this.lnkInventory.Text = ds.Tables[0].Rows[0][0].ToString() + " (" + ds.Tables[1].Rows[0][0].ToString() + ")";
背后的代码还有更多,但实际上只是在填充更多标签。我尝试了很多事情,包括设置AutoEventWireUp =" false",并确保我在任何标签中都没有SRC,甚至每次都没有订阅该事件,但是这些都无法使用。而且,如果我输入选择,但如果我选择鼠标,则两次。
我弄清楚了。是由于尝试捕获问题无法正确处理,并在选择的某些项目上引起重复错误。
这对我的项目非常有用 <asp:DropDownList ID="txtvisitname" AutoPostBack="true" class="txtno" AppendDataBoundItems="true"
runat="server" onchange="return selectChange()">
<asp:ListItem Text="--SELECT--" Value="0" />
<asp:ListItem Text="VISIT1" Value="VISIT1" />
<asp:ListItem Text="VISIT2" Value="VISIT2" />
<asp:ListItem Text="VISIT3" Value="VISIT3" />
<asp:ListItem Text="VISIT4" Value="VISIT4" />
<asp:ListItem Text="VISIT5" Value="VISIT5" />
<asp:ListItem Text="Unscheduled VISIT" Value="Unscheduled VISIT" />
</asp:DropDownList>
function selectChange() {
if ($("[id*=txtvisitname]").val() == "Unscheduled VISIT") {
$(".other").show();
} else {
$(".other").hide();
}
}