从下拉列表中删除特定值

Remove Specific Value from DropDown

我是 dot.net 的初学者,谁能建议我如何删除获取的下拉列表中的特定值。

这里我提到 fetched 的原因意味着下拉列表是使用 sql 从 table 生成或从中获取的。

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

比事后删除更好的是,一开始就不要添加它。

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");

您不能使用 foreach 循环修改集合。将其更改为 for 循环,这应该可以工作。

甚至比在添加过程中跳过它更好的是根本不从数据库中获取它:

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'";

;-)