DropDownList选择索引更改触发两次

时间:2017-09-05 13:27:27

标签: c# asp.net .net event-handling dropdown

这个很有意思。我有一个下拉列表,一旦选择进入并运行数据调用,返回数据并填充页面上的一些标签。这是问题所在:

如果我输入选择并点击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 =&#34; false&#34;,并确保我的任何标签中都没有src,甚至每次取消订阅该事件,但这些都不起作用。如果我输入选择它会发出一次,但是如果我选择了鼠标则会发生两次,这真是奇怪。

2 个答案:

答案 0 :(得分:0)

我明白了。是由于尝试捕获问题没有得到正确处理并导致选择的某些项目出现重复错误。

答案 1 :(得分:0)

当计划外访问显示div时,这对我的项目来说是完美的工作

 <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();
      }
 }