2016-10-30 1 views
2

У меня есть простая веб-форма с поиском и другим фильтром.Предотвращение обратной передачи для DropDown для первого значения в веб-форме asp.net

Поиск инициируется, когда пользователь нажимает кнопку поиска, а фильтр запускается на основе изменения выпадающего списка.

КОД

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

Использование кода я в качестве значения 0 до категории в ddCategory и я не хочу, чтобы вызвать обратную передачу, если пользователь выбрал Категория в качестве опции ddCategory выпадающий список.

В настоящее время, когда даже я выбрать значение постбэк происходит событие, если это первое значение в раскрывающемся списке Category со значением 0

Как я могу избежать такого постбэк

ответ

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.

+0

Спасибо, JS работает. Не уверен, что почему обязательный полевой валидатор не работает, возможно, он работает, когда связан с кнопкой Submit. В любом случае спасибо, я буду использовать подход JavaScript, поскольку я не могу тратить на это больше времени. – Learning

 Смежные вопросы

  • Нет связанных вопросов^_^