2011-09-13 50 views
0
foreach (ListItem item in ListBoxMembers.Items) 
{ 
    if (item.Selected) 
    { 
     countSelected += 1; 
    } 

} 
for (int counter = 0; counter < countSelected; counter++) 
{ 
    string firstName = ListBoxMembers.SelectedItems[counter].Value; 
} 

这不会返回选定的值。我哪里错了? 它抛出的错误是 System.Web.UI.WebControls不包含defenition为listboxmembers.selectedItems错误如何获取asp.net中列表框中的选定值

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using MySql.Data.MySqlClient; 
using MySql.Data; 
using System.Web.Security; 
using System.Data; 
using System.Web.UI.WebControls; 

这些名称空间我使用。

这就是我要做的

for (int counter = 0; counter < countSelected; counter++) 
      { 

     //To get User ID 
      string firstName=ListBoxMembers.SelectedItems[counter].Value; 

      // string firstName = ListBoxMembers.Items[counter].Value; 
      string GUserIDQueryText = "SELECT UserID FROM tbl_user WHERE FirstName "; 
      int userID = Convert.ToInt32(server.performQuery(GUserIDQueryText, firstName, MySqlDbType.VarChar)); 

      //Insert into tbl_userGroups 
      string insertIDText = "INSERT INTO tbl_usergroups 

(tbl_group_GroupID,tbl_user_UserID) VALUES(@tbl_group_GroupID,@tbl_user_UserID)"; 
... 
    } 

我想所有选定的用户添加到表中。

它引发的错误是System.Web.UI.WebControls不包含listboxmembers.selectedItems defenition你是否缺少一个目录或程序集指令。为什么我无法使用selectedItems

+0

如果它是一个列表框,也许你应该尝试,LstBoxMembers.SelectedItem或ListBoxMember.Items [ListBoxMember.SelectedItem] 。 – Burimi

+1

@Cody:如果它是一个多选框(它听起来像是这样),SelectedItem和Items只会返回所选的第一个项目。 – cHao

+0

谢谢大家。 – Mano

回答

5
countSelected = ListBoxMembers.Items.Cast<ListItem>().Where(i => i.Selected).Count(); 

,如果你试图让所有选定的项目,你可以做

var selectedNames = ListBoxMembers.Items.Cast<ListItem>() 
            .Where(i => i.Selected) 
            .Select(i => i.Value) 
            .ToList() 
+0

它引发的错误是System.Web.UI.WebControls不包含listboxmembers.selectedItems的defenition是否缺少目录或程序集指令。为什么我不能使用selectedItems – Mano

+0

@Mano我看到你在你的问题中使用了SelectedItems,并假设它是Winforms。我现在编辑了我对asp.net的回答。 –

+0

谢谢bala,但我需要每个名称传递给此int userID = Convert.ToInt32(server.performQuery(GUserIDQueryText,firstName,MySqlDbType.VarChar));所以它将名字和ID写入表中,我如何从列表中访问名字 – Mano

0

您是否在检查Postback并且不重新绑定时它是回发?我敢打赌,因为你正在重组,你吹掉了你选择的价值观。你的foreach循环中的代码是正确的。

+1

这可能会导致SelectedItems集合为空,但它不会导致错误,说属性没有被定义......会吗? –

1
List<string> selectedFirstNames = new List<string>(); 
foreach (ListItem item in ListBoxMembers.Items) 
{ 
    if (item.Selected) 
    { 
     selectedFirstNames.Add(item.Value); 
    } 

} 

//selectedFirstNames has your list of selected first names 
相关问题