2010-11-15 9 views
1

Я спросил себя, есть ли простой способ проверить, имеет ли ListBox не более 5 выбранных элементов. Должно быть не менее одного и не более 5 выбранных элементов.«Максимальное количество выбранных элементов» -Validator для ListBox

Нужен ли мне пользовательский валидатор с проверкой на стороне сервера?

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

ответ

2

Вы можете сделать это с помощью обычной 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"); 
+0

Я пытался реализовать событие CustomValidator сервера, но я получаю 'Сообщение: Sys.ArgumentException: Значение не должно быть пустым для контроля и поведения. Имя параметра: element'. Я думаю, что это имеет какое-то отношение к Ajax-ValidationCalloutExtender. –

+0

Я нашел что-то об этой проблеме, похоже, проблема с ValidationCalloutExtender и 'EnableClientScript =" false ". http://ajaxcontroltoolkit.codeplex.com/workitem/17713?ProjectName=ajaxcontroltoolkit –

+0

Эта страница лучше описывает проблему и предоставляет решение (даже для не столь простых вещей, как мой собственный идентификатор): http: //www.junnark. com/Articles/Article0001.aspx Если вы могли бы предоставить функцию ClientValidationFunction с помощью jQuery, я отвечу на этот вопрос как ответ. Спасибо. –

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