错误:foreach语句无法对“System.Web.UI.WebControls.ListItem”类型的变量进行操作

时间:2014-02-07 07:10:16

标签: c# asp.net

我正在尝试使用此代码将多个所选项目从一个ListBox移动到另一个ListBox

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

但显示错误

  

foreach语句不能对类型的变量进行操作   'System.Web.UI.WebControls.ListItem'因为   'System.Web.UI.WebControls.ListItem'不包含公共   'GetEnumerator'的定义

我不知道为什么会出现这个错误。

请帮我修理

5 个答案:

答案 0 :(得分:1)

检查此代码。

protected void imgbtnMoveRightListBox_Click(object senderImageClickEventArge)

    {
    foreach (ListItem item in lstboxSkill.Items)
    {
        lstBBoxSkill2.Items.Add(item);
    }
}

答案 1 :(得分:0)

lstboxSkill.SelectedItemListItem,既不是数组也不是实现System.Collections.IEnumerable<T>System.Collections.Generic.IEnumerable<T>接口的对象集合,因此不可能{{1} }} 反对。

我认为这就是你要找的东西:

foreach

答案 2 :(得分:0)

这是因为SelectedItem属性仅返回所选项目列表中索引最低的项目。您应该将代码更改为

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

并设置两个列表框SelectionMode =“Multiple”。

希望这会对你有所帮助。不要忘记标记为答案

由于 所罗门S.

答案 3 :(得分: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);
            }
        }            
    }

答案 4 :(得分:-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