我是dot.net的初学者,任何人都可以建议我如何删除获取的下拉列表中的特定值。
这里为什么我提到fetched意味着dropdownlist是使用sql从表生成或从表中获取的。
sqlquery=SELECT DISTINCT rtrim(ltrim(C.Cust_name)) as Cust_name FROM table1 A inner join table2 B on A.cust_code = B.Cust_Code
SqlCommand cmd = new SqlCommand(sqlquery, conn);
SqlDataReader sr = cmd.ExecuteReader();
while (sr.Read())
{
{
cmb_cust.Items.Add(sr["Cust_name"].ToString());
}
}
foreach (ListItem li in cmb_cust.Items)
{
{
if (li.Value == "value1")
cmb_cust.Items.Remove(li);
}
}
如果我处理上面的语句我面对集合被修改枚举操作可能无法执行,我可以得到任何其他解决方案,例如将列表交换到临时列表并处理操作。从sql中获取后,我不需要 value1 。
答案 0 :(得分:2)
甚至比之后删除项目更好,不要在第一时间添加它。
while (sr.Read())
{
var txt = sr["Cust_name"].ToString();
if (txt != "value1")
cmb_cust.Items.Add(txt);
}
或者您可以在SQL查询中排除它。
SELECT tbl1.Cust_name
FROM
(
SELECT DISTINCT rtrim(ltrim(C.Cust_name)) as Cust_name
FROM table1 A
inner join table2 B on A.cust_code = B.Cust_Code
) As tbl1
where
tbl1.Cust_name != 'value1'
您获得该异常的原因是您在枚举时无法从集合中删除项目。如果你想删除一个项目,你应该写:
cmb_cust.Items.Remove("value1");
答案 1 :(得分:1)
甚至比在添加过程中跳过它更好的是根本不从DB中获取它:
sqlquery = @"SELECT DISTINCT rtrim(ltrim(C.Cust_name)) as Cust_name
FROM table1 A inner join table2 B on A.cust_code = B.Cust_Code
WHERE Cust_name <> 'value1'";
- )
答案 2 :(得分:0)
您无法使用foreach
循环修改集合。将其更改为for
循环,这应该有效。