组合框默认值始终为 SQL table 值 - c#
Combobox default value is always SQL table value - c#
我正在从 Stored Procedure
中检索 datatable
,Combobox
正在显示该数据,但我想显示 -Select Program- 作为 [ 的默认值=15=] 但它总是显示数据表的第一条记录。
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;
通过使用数据源属性,您首先删除了存在的数据。从数据源填充组合框后,您应该插入“-SELECT PROGRAM-”行。
试试这个:
cbxProgram.DataSource = SomeBL.GetProgramName().Tables[0];
cbxProgram.DisplayMember = "ProgramName";
cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
cbxProgram.SelectedIndex = 0;
在绑定之前,您必须将自定义行添加到 Table。
我没有对此进行测试,但它应该看起来像这样:
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";
如果在设置数据源后不让你再添加一行,你可以考虑将这一行添加到源数据表中。 (我不建议通过更改存储过程从 SQL 数据库添加它。)
检查这个伪代码:
SomeBL.GetProgramName().Tables[0].Rows.Add(new DataRow(0, "-SELECT PROGRAM-"));
cbxProgram.DisplayMember = "ProgramName";
cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
cbxProgram.SelectedIndex = 0;
我正在从 Stored Procedure
中检索 datatable
,Combobox
正在显示该数据,但我想显示 -Select Program- 作为 [ 的默认值=15=] 但它总是显示数据表的第一条记录。
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;
通过使用数据源属性,您首先删除了存在的数据。从数据源填充组合框后,您应该插入“-SELECT PROGRAM-”行。 试试这个:
cbxProgram.DataSource = SomeBL.GetProgramName().Tables[0];
cbxProgram.DisplayMember = "ProgramName";
cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
cbxProgram.SelectedIndex = 0;
在绑定之前,您必须将自定义行添加到 Table。
我没有对此进行测试,但它应该看起来像这样:
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";
如果在设置数据源后不让你再添加一行,你可以考虑将这一行添加到源数据表中。 (我不建议通过更改存储过程从 SQL 数据库添加它。)
检查这个伪代码:
SomeBL.GetProgramName().Tables[0].Rows.Add(new DataRow(0, "-SELECT PROGRAM-"));
cbxProgram.DisplayMember = "ProgramName";
cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
cbxProgram.SelectedIndex = 0;