«Максимальное количество выбранных элементов» -Валидатор для ListBox - PullRequest
1 голос
/ 15 ноября 2010

Я спросил себя, есть ли простой способ проверить, имеет ли ListBox максимум 5 выбранных элементов.Должен быть выбран хотя бы один и максимум пять элементов.

Нужен ли CustomValidator с проверкой на стороне сервера?

Заранее большое спасибо ...

1 Ответ

2 голосов
/ 15 ноября 2010

Вы можете сделать это с помощью процедуры CustomValidator.

<asp:CustomValidator ID="ListBox5ItemsValidator" runat="server"
    OnServerValidate="ListBox5ItemsValidator_ServerValidate"
    ClientValidationFunction="ListBox5ItemsValidator_ClientValidate"
    ControlToValidate="MyListBox">
</asp:CustomValidator>

Код на стороне сервера:

protected void ListBox5ItemsValidator_ServerValidate(
        object source, ServerValidateEventArgs args) {

    int selectionCount = 0;
    foreach (ListItem item in MyListBox.Items) {
        if (item.Selected) selectionCount++;
    }
    args.IsValid = (selectionCount >= 1 && selectionCount <= 5);
}

Код на стороне клиента:

function ListBox5ItemsValidator_ClientValidate(sender, args) {
    var selectionCount = $('#<% =MyListBox.ClientID %> option:selected').length;
    args.IsValid = (selectionCount >= 1 && selectionCount <= 5);
};

Замените MyListBox реальным именем вашего ListBox, которое вы хотите проверить. Если ваш ListBox содержится внутри других контейнерных элементов управления, вам может потребоваться немного больше работы для ссылки на элемент управления как на стороне сервера, так и на стороне клиента. Например, если он содержится в элементе управления FormView с именем FormView1, вы должны использовать

ListBox MyListBox = (ListBox)FormView1.FindControl("MyListBox");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...