2014-02-07 51 views
1

我想多選擇的項目從一個列表框使用此代碼移動到另一個列表框錯誤:foreach語句不能對類型的變量操作「System.Web.UI.WebControls.ListItem」

protected void imgbtnMoveRightListBox_Click(object sender, ImageClickEventArgs e) 
{ 
    foreach (var item in lstboxSkill.SelectedItem) 
    { 
     lstBBoxSkill2.Items.Add(item); 
    } 
} 

但顯示錯誤

foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.ListItem' because 'System.Web.UI.WebControls.ListItem' does not contain a public definition for 'GetEnumerator'

我不知道爲什麼會出現此錯誤。

請幫我解決它

+1

'lstboxSkill.SelectedItem'不是一個「列表」,它只是列表中被點擊觸發事件的一個項目。因此,這種說法毫無意義。 – rikitikitik

+0

您的代碼聽起來像是該物品中的每個物品,這在邏輯上是錯誤的。 –

回答

0

Snap shot of the page where I am using this

請檢查該快照我已經創建,其工作的罰款。 以及後面的代碼如下:

protected void Page_Load(object sender, EventArgs e) 
    { 
     lstboxSkill.Items.Add("ASP.Net"); 
     lstboxSkill.Items.Add("C#"); 
     lstboxSkill.Items.Add("AJAX"); 
     lstboxSkill.Items.Add("JavaScript"); 
     lstboxSkill.Items.Add("HTML"); 
     lstboxSkill.Items.Add("HTML5"); 
     lstboxSkill.Items.Add("JQuery"); 
    } 
protected void imgbtnMoveRightListBox_Click(object sender, EventArgs e) 
    { 
     foreach (ListItem Item in lstboxSkill.Items) 
     { 
      if (Item.Selected == true) 
      { 
       lstBBoxSkill2.Items.Add(Item); 
      } 
     }    
    } 
+0

你的代碼非常好,即使我已經在單獨的應用程序中嘗試過它,它在那裏工作得很好,但不知道爲什麼在我的應用程序中它不工作..在我的應用程序,我動態綁定第一個列表框從下拉列表中選擇的值,然後根據第一個列表框項目我填寫第二個列表框 – akvickyit7

+0

可以請你給我寫的代碼綁定第一個列表框,然後第二個與屏幕截圖@ akvickyit7 –

0

lstboxSkill.SelectedItemListItem,這既不是數組,也不是實現System.Collections.IEnumerable<T>System.Collections.Generic.IEnumerable<T>接口的對象集合,所以它不可能做foreach反對。

我認爲這是你在找什麼:

foreach (var item in lstboxSkill.Items) 
{ 
    if (item.Selected) 
    { 
     lstBBoxSkill2.Items.Add(item); 
    } 
} 
+2

你需要在添加它之前驗證該項目是否被選中,不是嗎? – ps2goat

+1

這將添加列表中的所有項目。我認爲目的是隻添加選定的項目。 – rikitikitik

+0

我已經改變了答案,謝謝輸入的人。 – ekad

-1
protected void imgbtnMoveRightListBox_Click(object sender, EventArgs e) 
{ 
    lbltxt.Visible = false; 
    if (ListBox1.SelectedIndex >= 0) // in this we are checking whether a single item is clicked. 
    { 
     for (int i = 0; i < ListBox1.Items.Count; i++) // we are looping through the list box items 
     { 
      if (ListBox1.Items[i].Selected) // finding the selected items 
      { 
       if (!arraylist1.Contains(ListBox1.Items[i])) 
       { 
        arraylist1.Add(ListBox1.Items[i]); //if found then adding those items to the array list 
       } 
      } 
     } 
     for (int i = 0; i < arraylist1.Count; i++) 
     { 
      if (!ListBox2.Items.Contains(((ListItem)arraylist1[i]))) 
      { 
       ListBox2.Items.Add(((ListItem)arraylist1[i])); // we are adding the array elements to the second list box 
      } 
      ListBox1.Items.Remove(((ListItem)arraylist1[i])); 
     } 
     ListBox2.SelectedIndex = -1; 
    } 
    else 
    { 
     lbltxt.Visible = true; 
     lbltxt.Text = "Please select atleast one in Listbox1 to move"; 
    } 
} 

Source

+1

爲什麼downvotes,一個解釋會更好 –

0

這是因爲SelectedItem屬性返回只具有最低指數淘汰之列的項目所選項目。你應該改變你的代碼爲

protected void imgbtnMoveRightListBox_Click(object sender, EventArgs e) 
    { 
     foreach (ListItem Item in lstboxSkill.Items) 
     { 
      if (Item.Selected == true) 
      { 
       lstBBoxSkill2.Items.Add(Item); 
      } 
     }    
    } 

並設置兩個listbox SelectionMode =「多個」。

希望這會幫助你。不要忘記標記爲答案

感謝 所羅門S.

+0

是SOLOMON SARKAR代碼正在工作,但問題是在lstboxSkill總是第一項被選擇爲真,而不是其他項目。它沒有得到除首先選擇哪些項目。 – akvickyit7

+0

否否我已檢查過它及其工作,即使您選擇了任何索引而不是第一個索引。 @ akvickyit7 –

1

請檢查此代碼。

protected void imgbtnMoveRightListBox_Click(object senderImageClickEventArge) 

    { 
    foreach (ListItem item in lstboxSkill.Items) 
    { 
     lstBBoxSkill2.Items.Add(item); 
    } 
} 
相關問題