防止asp.net webform中第一个值的下拉列表回发

本文关键字:下拉列表 第一个 asp net webform 防止 | 更新日期: 2023-09-27 18:15:36

我有一个简单的webform与搜索和其他过滤器。

当用户点击搜索按钮时触发搜索,过滤器是基于下拉更改触发的。

    <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"));

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

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

如何避免这种回发

防止asp.net webform中第一个值的下拉列表回发

您需要一个JavaScript函数来确保当用户选择"Category"条目时不会发生回发。它看起来像这样:

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>

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