2011-09-13 91 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 
相關問題