我有一个邮政编码列表,我把它绑定到一个列表框。 它包含两个属性:邮政编码,区域。
我想遍历列表框项目,如果选择了该项目,请将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对象?
感谢
答案 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));
}
}
无论如何这是不推荐的方式。您应该获取选定的值并使用该选定的值(唯一字段)从任何持久性存储(如数据库)中获取相关数据。