множественный выбор из списка в C # - PullRequest
2 голосов
/ 29 июня 2011

Мне было интересно, как я могу позволить пользователю сделать только 3 выбора из списка. Я смотрю на этот код, я думаю, что в этом есть логическая ошибка, но я не вижу, что пошло не так, как я новичок в этомможет кто-нибудь, пожалуйста, направьте меня или поделитесь со мной какой-нибудь статьей, чтобы я мог поработать над этим, спасибо:)

мой код

if (listBox1.SelectedIndex <= 4)
     errorProvider1.SetError(listBox1, "Please pick 1.");
else
     errorProvider1.SetError(listBox1, "");

Ответы [ 3 ]

2 голосов
/ 29 июня 2011

Вы можете использовать ASP.NET-CustomValidator для этого:

Предоставление функции проверки клиента:

function validateSelectionCount(sender, args){
    var listbox = document.getElementById('ListBox1');
    args.IsValid = validateListBoxSelectionCount(listbox, 3, 3);
} 

function validateListBoxSelectionCount(listbox, minSelected, maxSelected){
    var selected=0;
    if(listbox != null){
        for (var i=0; i<listbox.length; i++){
            if(listbox.options[i].selected){
               selected++; 
               if(selected>maxSelected)break;
            }
        }
    }
   return (selected >= minSelected && selected <= maxSelected);
} 

, обеспечивающей функцию проверки на сервере:

Protected Sub validateSelectionCount(ByVal source As Object, ByVal args As ServerValidateEventArgs)
    Dim count As Int32 = 0
    Dim maxCount As Int32 = 3
    Dim minCount As Int32 = 3
    Dim lb As ListBox = DirectCast(Me.FindControl(DirectCast(source, CustomValidator).ControlToValidate), ListBox)
    For Each item As ListItem In lb.Items
        If item.Selected Then count += 1
        If count > maxCount Then Exit For
    Next
    args.IsValid = (count >= minCount AndAlso count <= maxCount)
End Sub

и часть aspx:

<asp:ListBox ID="ListBox1" CausesValidation="true" ValidationGroup="VG_SAVE" runat="server" CssClass="content" SelectionMode="Multiple"></asp:ListBox>
<asp:CustomValidator ID="CV_SelectionCount" runat="server" ValidateEmptyText="true" ClientValidationFunction="validateSelectionCount" OnServerValidate="validateSelectionCount" ControlToValidate="ListBox1" Display="None" EnableClientScript="true" ErrorMessage="Select 3 items" Style="visibility: hidden" ValidationGroup="VG_SAVE">*</asp:CustomValidator>
2 голосов
/ 29 июня 2011

Saurabh прав, установите для свойства Listbox для SelectionMode значение Multiple.Это позволит вам сделать несколько выборов из списка.

2 голосов
/ 29 июня 2011
<asp:ListBox SelectionMode="Multiple"></asp:ListBox>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...