防止DropDown的回发为asp.net webform中的第一个值

时间:2016-10-30 08:22:05

标签: c# asp.net webforms

我有简单的网页表单,包含搜索和其他过滤器。

当用户点击搜索按钮时触发搜索,并根据下拉列表更改触发过滤器。

CODE

    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
    <asp:TextBox ID="txtSearch" runat="server" placeholder="SEARCH" CssClass="form-control search-text"></asp:TextBox>
    <asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="btn search-btn" />
    </div>


<div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 ">
<asp:DropDownList ID="ddCategory" CssClass="form-control" AutoPostBack="true" OnSelectedIndexChanged="ddCategory_SelectedIndexChanged"  runat="server"  DataTextField="Name" DataValueField="ID" >
</asp:DropDownList>
<asp:RequiredFieldValidator id="rfvdd" runat="server" ErrorMessage=""  ControlToValidate="ddCategory" InitialValue="0" ValidationGroup="ddCategory">
</asp:RequiredFieldValidator>
</div>

代码背后

String strSql = "SELECT ID, Name FROM  Category ORDER BY Name ASC";
DataSet ds = new DataSet();
ds = DataProvider.Connect_Select(strSql);
ddCategory.DataSource = ds;
ddCategory.DataBind();
ddCategory.Items.Insert(0, new ListItem("CATEGORY", "0"));

使用代码i作为ddCategory中的类别的0值,并且当用户在ddCategory下拉列表中选择类别作为选项时,我不想触发回发。

目前即使我选择一个值回发也会发生事件,如果它是下拉Category中值为0的第一个值

我怎样才能避免这种回发

1 个答案:

答案 0 :(得分:2)

当用户选择“类别”条目时,您需要一个JavaScript函数来确保不会发生回发。这看起来像这样:

function onCategoryChange() {
  var value = $("#<%= ddCategory.ClientID %> option:selected").val(); // use the ClientID from the ddCategory dropdown
  if (value == "0") // this is the value for the "Category" entry
    return false; 
  else {
    __doPostBack('<%= ddCategory.ClientID %>', value);
  }
}

您还必须采用DropDownList以便调用JavaScript函数。因此,您可以添加onchange属性,如下所示:

<asp:DropDownList ID="ddCategory"
                  CssClass="form-control"
                  AutoPostBack="true"
                  OnSelectedIndexChanged="ddCategory_SelectedIndexChanged"
                  runat="server"
                  DataTextField="Name"
                  DataValueField="ID"
                  onchange="return onCategoryChange();">
</asp:DropDownList>

P.S。:请注意,我使用jQuery在类别下拉字段中选择所选选项。如果您没有可用的jQuery,则必须采用所选的选项来使用纯JavaScript。