Отключение PostBack для пустого элемента / элемента по умолчанию в DataBound DropDownList - PullRequest
2 голосов
/ 30 июня 2011

У меня есть DropDownList, который заполняется из источника данных.После привязки я помещаю пустое поле вверху списка, чтобы оно показалось пользователю пустым (создавая своего рода «элемент по умолчанию»).У меня есть некоторый код для обработки события SelectedIndexChanged, но его не нужно выполнять, если пользователь выберет пустой ListItem.

Вот мой код:

.aspx

<asp:DropDownList ID="dropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="dropDownList_SelectedIndexChanged">
</asp:DropDownList>  

C # Код за добавлением пустого ListItem

dropDownList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
dropDownList.SelectedIndex = 0;

Так как мне не нуженЧтобы сделать обратную передачу, когда пользователь щелкает только этот конкретный индекс, я хочу полностью отключить обратную передачу для просто этого списка.Это вообще возможно?Если так, то как?

Ответы [ 3 ]

3 голосов
/ 30 июня 2011

Установить disabled="disabled", это сделает элемент недоступным для выбора (и не выполнит обратную передачу)

<asp:DropDownList runat="server" ID="dddl">
    <asp:ListItem Text="" disabled="disabled" Selected="True"></asp:ListItem>
    <asp:ListItem Text="test"></asp:ListItem>
</asp:DropDownList>

В качестве альтернативы, если вы хотите иметь возможность выбрать первый (пустой) элемент, но не выполнять обратную передачу,сделать это:

<asp:DropDownList runat="server" ID="dddl" AutoPostBack="true" onchange="if(this.selectedIndex == 0)return false;">
    <asp:ListItem Text="" Selected="True"></asp:ListItem>
    <asp:ListItem Text="test"></asp:ListItem>
</asp:DropDownList>
2 голосов
/ 29 июня 2012

Вы можете добавить обязательное поле проверки.Затем установите для свойства CausesValidation DropDownList значение true.Это предотвратит обратную передачу, а также обеспечит обратную связь с конечным пользователем.

    <asp:DropDownList ID="dropDownList" runat="server" AutoPostBack="true"  OnSelectedIndexChanged="dropDownList_SelectedIndexChanged" CausesValidation="true">
    </asp:DropDownList>
    <asp:RequiredFieldValidator ID="rfvDropDownList" runat="server" ErrorMessage="Must select a value!" ControlToValidate="dropDownList" />
1 голос
/ 30 июня 2011

Не могли бы вы добавить атрибут onChange для запуска функции JS, которая проверяет, является ли значение пустым, перед отправкой назад?

т.е.

dropDownList.Attributes.Add("onChange", "javascript: return ddlChange()");

function ddlChange
{
    if(document.getElementById("<%= dropDownList.ClientID %>").value == "")
        return false;

    return true;
}
...