【问题标题】:multiple selection from listbox in c#从C#中的列表框中进行多项选择
【发布时间】:2011-09-24 23:59:28
【问题描述】:

我想知道如何允许用户从列表框中只进行 3 项选择。我正在查看这段代码,我认为这有一些逻辑错误,但我不知道出了什么问题,因为我是新手有人可以指导我或与我分享一些文章,以便我可以解决这个问题,谢谢:)

我的代码

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

【问题讨论】:

    标签: asp.net listbox multipleselection


    【解决方案1】:
    <asp:ListBox SelectionMode="Multiple"></asp:ListBox>  
    

    【讨论】:

      【解决方案2】:

      您可以为此使用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>
      

      【讨论】:

      • 我目前在一个网络表单上做这件事,我也可以实现这个吗? c#
      【解决方案3】:

      Saurabh 是对的,将 SelectionMode 的 Listbox 属性设置为 Multiple。这将允许您从列表框中进行多项选择。

      【讨论】:

      • 设置为多简单或多扩展
      • 我认为你不应该为简单和扩展而烦恼。将其属性设置为SelectionMode = Multiple 后将满足您的要求
      • 所以这意味着我将它设置为哪个无关紧要?以及如何编写以使用户仅选择 3,当他们选择第 4 时,将出现错误提供程序
      • 你没有在你的问题中提到这一点。好的,那么您必须按照 Tim Schmelter 的描述编写自定义验证器。它将用 c# 和 .cs 文件编写。
      猜你喜欢
      • 1970-01-01
      • 2020-07-07
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多