组合框自定义项和数据绑定项

时间:2014-06-22 13:58:10

标签: c# combobox datasource items

我已经创建了组合框,并且从数据源函数getBS()添加了项目和加载的数据会返回bindingsource。

comboBox1.Items.Insert(0, "ALL");
comboBox1.DataSource = getBS();

当我评论数据源时,它只显示项目" all",但是当代码是这样时,它只显示数据,但它不显示属性" all"。有没有办法将它们组合在一起?显示属性" all"和其他数据?

2 个答案:

答案 0 :(得分:0)

comboBox1.DataSource = getBS();
comboBox1.Items.Insert(0, "ALL");

您需要填充数据源,然后添加它。在索引0处插入项目的点是,您可以将其添加到现有的ListItem集合中。

如果添加项目,则设置数据源,清算数据源并重置它。

答案 1 :(得分:0)

MSDN says

  

数据源可以是数据库,Web服务或可以的对象   稍后用于生成数据绑定控件。当DataSource   已设置属性,无法修改项目集合

那你现在有什么选择呢?

BindingSource GetBS(bool addAll = false)
{
    ......
    con.Open(); 
    cmd = new SqlCommand("uspPodruznicaSelect", con); 
    da.SelectCommand = cmd; 
    da.SelectCommand.CommandType = CommandType.StoredProcedure; 
    da.Fill(dbtable); 

    if(addAll)
    {
        DataRow dr = dbTable.NewRow();
        dr["ItemID"] = 0;
        dr["ItemData"] = "ALL";
        dbTable.Rows.InsertAt(dr, 0);
    }

    bsource.DataSource = dbtable; 
    con.Close(); 
    return bsource;
}

将ALL直接添加到sp返回的DataTable中。当然,我不知道这个表中涉及的字段的确切名称,但这只是为了给你一个想法。如果sp返回一个包含更多字段的表并且这些字段是NOT NULLABLE,则可能还有其他问题。在这种情况下,您还需要为新行中的这些字段添加虚拟值。