学校和朋友们一块做了个项目,碰到个从数据库获取项添加到下拉列表里的问题,重复项没法弄,不能给客户看到很多重复的选项啊,在网上找了很多,都是从底层开始解决的,可是现在项目都做差不多了,要是从底层开始弄就要从新开始,所以,自己想了个办法。
我用的是vs2005和sql2005,用的三层架构,从显示层过滤的
//过滤下拉列表重复项
private void deletDouble(string columnName,DataSet ds)
{
Hashtable ht = new Hashtable();
foreach (DataRow row in ds.Tables["salesinformation"].Rows)
{
object ob = row[columnName];
if (ht[ob]==null)
{
ht.Add(ob,ob);
}
}
if (columnName == "managers")
{
foreach (object ob in ht.Values)
{
this.cbbManagers.Items.Add(ob.ToString());
}
}
if (columnName == "brand")
{
foreach (object ob in ht.Values)
{
this.cbbBrand.Items.Add(ob.ToString());
}
}
if (columnName == "salestype")
{
foreach (object ob in ht.Values)
{
this.cbbSalestype.Items.Add(ob.ToString());
}
}
}
//填写下拉列表框的方法
private void getCombobox(string combo)
{
string thisdate = DateTime.Now.ToString();
DataSet ds = DangRiXiaoShouChaXunManager.getDangRiXiaoShouJiLu("", "", thisdate);
if (combo == "managers")
{
this.cbbBrand.Items.Clear();
this.cbbSalestype.Items.Clear ();
deletDouble(combo,ds);
}
if (combo == "salestype")
{
this.cbbManagers.Items.Clear();
this.cbbBrand.Items.Clear();
deletDouble(combo,ds);
}
if (combo == "brand")
{
this.cbbManagers.Items.Clear();
this.cbbSalestype.Items.Clear();
deletDouble(combo,ds);
}
}