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

C# 组合框自定义项和数据绑定项,c#,combobox,datasource,items,C#,Combobox,Datasource,Items,我制作了组合框,并从datasource函数getBS()返回bindingsource添加了项和加载了数据 comboBox1.Items.Insert(0, "ALL"); comboBox1.DataSource = getBS(); 当我注释datasource时,它只显示项“all”,但当代码是这样时,它只显示数据,而不显示属性“all”。有没有办法把这一切都做到一起?要显示属性“全部”和其余数据 comboBox1.DataSource = getBS(); comboBox1.I

我制作了组合框,并从datasource函数
getBS()
返回bindingsource添加了项和加载了数据

comboBox1.Items.Insert(0, "ALL");
comboBox1.DataSource = getBS();
当我注释datasource时,它只显示项“all”,但当代码是这样时,它只显示数据,而不显示属性“all”。有没有办法把这一切都做到一起?要显示属性“全部”和其余数据

comboBox1.DataSource = getBS();
comboBox1.Items.Insert(0, "ALL");
您需要填充数据源,然后再添加它。在索引0处插入项的目的是为了将其添加到现有的ListItems集中

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

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

那么你现在有什么选择

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返回的数据表中。当然,我不知道该表中涉及的字段的确切名称,但这只是给您一个想法。如果sp返回包含更多字段的表,并且这些字段不可为空,则可能会出现其他问题。在这种情况下,您还需要为新行中的这些字段添加一个伪值。

能否显示getBS()定义?con.Open();cmd=新的SqlCommand(“usppodruznicalselect”,con);da.SelectCommand=cmd;da.SelectCommand.CommandType=CommandType.StoredProcess;da.填充(数据库表);bsource.DataSource=dbtable;con.Close();返回b源;已经试过了。仍然只显示数据。我使用的存储过程返回所有数据,然后是“da.Fill(dbtable);bsource.DataSource=dbtable;然后返回bsource;'con.Open();cmd=new-SqlCommand(“uspPodruznicaSelect”,con);da.SelectCommand=cmd;da.SelectCommand.CommandType=CommandType.StoredProcedure;da.Fill(dbtable);bsource.DataSource=dbtable;con.Close();返回bsource;'