Combobox默认值始终是SQL表值 - c#

时间:2016-03-14 14:12:37

标签: c# winforms stored-procedures combobox default-value

我正在从datatable检索Stored ProcedureCombobox正在显示该数据,但我想显示 - 选择程序 - 作为Combobox的默认值,但它总是显示数据表的第一条记录。

InitializeComponent();
        cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
        cbxProgram.SelectedIndex = 0;
        cbxProgram.DataSource = SomeBL.GetProgramName().Tables[0];
        cbxProgram.DisplayMember = "ProgramName";

        cbxType.DataSource = SomeBL.GetType("").Tables[0].DefaultView;
        cbxType.DisplayMember = "Type";

        cbxNumber.DataSource = SomeBL.GetNumber("", "").Tables[0].DefaultView;
        cbxNumber.DisplayMember = "Number";

        cbxType.Enabled = false;
        cbxType.Enabled = false;

3 个答案:

答案 0 :(得分:2)

您必须在绑定之前将自定义行添加到表中。

我没有对此进行测试,但看起来应该是这样的:

DataTable dt = SomeBL.GetProgramName().Tables[0];
DataRow dr = dt.NewRow();
dr[0] = "-SELECT PROGRAM-";  // Look at the index of your desired column
dt.Rows.InsertAt(dr,0);      // Insert on top position



cbxProgram.DataSource = dt;
cbxProgram.SelectedIndex = 0;
cbxProgram.DisplayMember = "ProgramName";

答案 1 :(得分:1)

通过使用Datasource属性,您可以删除首先存在的数据。你应该插入" -SELECT PROGRAM - "从数据源填充组合框后的行。 试试这个:

cbxProgram.DataSource = SomeBL.GetProgramName().Tables[0];
cbxProgram.DisplayMember = "ProgramName";
cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
cbxProgram.SelectedIndex = 0;

答案 2 :(得分:1)

如果在设置数据源后不允许添加另一行,则可以考虑将该行添加到源数据表中。 (我不建议您通过更改存储过程从SQL数据库中添加它。)

检查此伪代码:

button