我有简单的网页表单,包含搜索和其他过滤器。
当用户点击搜索按钮时触发搜索,并根据下拉列表更改触发过滤器。
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
的第一个值
我怎样才能避免这种回发
答案 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。