【问题标题】:Prevent Postback for DropDown for first value in asp.net webform防止在 asp.net webform 中为 DropDown 回发第一个值
【发布时间】:2016-10-30 08:22:04
【问题描述】:

我有一个带有搜索和其他过滤器的简单网络表单。

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

代码

    <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

我怎样才能避免这种回发

【问题讨论】:

    标签: c# asp.net webforms


    【解决方案1】:

    您需要一个 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。

    【讨论】:

    • 感谢 JS 方法有效。不确定为什么必填字段验证器不起作用可能是与提交按钮相关联时起作用。无论如何,谢谢,我将使用 JavaScript 方法,因为我不能再花时间在这上面了。
    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多