自定义对象列表框Foreach循环

时间:2015-02-09 10:28:53

标签: c# list

我有一个邮政编码列表,我把它绑定到一个列表框。 它包含两个属性:邮政编码,区域。

我想遍历列表框项目,如果选择了该项目,请将postcodeitem对象添加到另一个列表中。

            List<Valueobjects.postcodeitem> temp = _BL.GetPostCodeAreasFromZones();
            PCList.AddRange(temp);
            ListBox1.DataSource = PCList;
            ListBox1.DataBind();


List<Valueobjects.postcodeitem> postcodecollection = new List<Valueobjects.postcodeitem>();

foreach (ListItem listitem in ListBox1.Items)
{
    if (listitem.Selected)
    {
        i = i + 1;

        //Run at 20 to speed up query
        if (i == 20)
        {
            //Get data
            CustList.AddRange(BL.SearchCustomerByPostcodeArea(postcodecollection,2));
            i = 0;
            }
            else
            {
                //add the post code to temp list
                postcodecollection.Add(listitem);
            }
        }
    }

    if (i > 0)
    {
        //get data
        CustList.AddRange(BL.SearchCustomerByPostcodeArea(postcodecollection,2));
    }
}

显然,我试图添加(listitem)的地方不会起作用,因为这是一个列表项而不是邮政编码项。我的问题是如何在选择列表项的列表中获取postcodeitem对象?

感谢

1 个答案:

答案 0 :(得分:1)

尝试以下内容。

IList<Employee> boundList = ListBox1.DataSource
var obj = boundList[ListBox1.SelectedIndex]

更新 =&gt;我还没有测试过代码,但是有类似的内容。使用for循环来跟踪元素索引。

for (int i = 0; i< ListBox1.Items.Length; i++)
{
    if (ListBox1.Items[i].Selected)
    {
        i = i + 1;

        //Run at 20 to speed up query
        if (i == 20)
        {
            //Get data
            CustList.AddRange(BL.SearchCustomerByPostcodeArea(postcodecollection,2));
            i = 0;
            }
            else
            {
                //add the post code to temp list
                postcodecollection.Add(ListBox1.DataSource.ToList().ElementAt(i));
            }
        }
    }

    if (i > 0)
    {
        //get data
        CustList.AddRange(BL.SearchCustomerByPostcodeArea(postcodecollection,2));
    }
}

无论如何这是不推荐的方式。您应该获取选定的值并使用该选定的值(唯一字段)从任何持久性存储(如数据库)中获取相关数据。