防止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
的第一个值,则会发生回发事件
如何避免这种回发
您需要一个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。