如何从asp.net的列表框中获取选定的行数

时间:2011-09-28 20:05:19

标签: c# asp.net

int countSelected = ListBoxMembers.Items.Cast<ListItem>().Where(i => i.Selected).Count();
       string groupName = txt_GroupName.Text;


       for (int counter = 0; counter < ListBoxMembers.Items.Count; counter++)

我在列表中有20个项目,当我只选择2个ListBoxMembers.Items.Count shouws 20并且Countselected为0

我试过这个int count = ListBoxMembers.GetSelectedIndices()。length; system.web.ui.controls.listbox不包含所选项的定义,并且没有扩展方法selevted items acceptin first argument error

 <asp:ListBox ID="ListBoxMembers" runat="server" SelectionMode="Multiple" CssClass="style102"
                                   ToolTip="Press ctrl to select multiple users" DataValueField="FirstName"></asp:ListBox>

3 个答案:

答案 0 :(得分:3)

只需使用ListBox内置的功能......不需要Linq。 (对于WinForms)

int countSelected = ListBoxMembers.SelectedItems.Count;

编辑:(因为OP添加到问题中,它似乎与ASP.NET有关)

int countSelected = 0;
foreach(ListItem li in ListBoxMembers.Items)
    if(li.Selected)
        countSelected++;

我不确定为什么Linq声明不起作用。它当然应该是......如果你明确包括真的有什么区别吗? i => i.Selected == true

答案 1 :(得分:2)

您的代码看起来不错,但您可以尝试:

int count = ListBoxMembers.GetSelectedIndices().Length;

答案 2 :(得分:0)

应该有类似listBoxMembers.SelectedItems的东西,它返回所选项目的列表。所以你可以做listBoxMembers.SelectedItems.count。现在这是在VB.Net中,但对于C#

应该有类似的东西