C# 从数据集中填充 DataGridViewComboBoxCell 并从数据库中获取选定的值
C# populate DataGridViewComboBoxCell from dataset and get the selected value from database
我需要从 Table 1(id,name,...) 中将数据库中的不同值添加到我的 DataGridViewComboBoxColumn
中,并且必须选择它的值(name)。
我的代码:
SqlDataAdapter coursead = new SqlDataAdapter("select * from tbl_armycourses", longrollcon);
coursead.Fill(courseds, "tbl_armycourses");
for (int j = 0; j < ds5.Tables[0].Rows.Count; j++)
{
DataGridViewComboBoxCell ComboColumn = (DataGridViewComboBoxCell)(dataGridView5.Rows[j].Cells[0]);
ComboColumn.DisplayMember = "course_name";
ComboColumn.ValueMember = "armycourse_id";
ComboColumn.DataSource = courseds.Tables["tbl_armycourses"];
}
for (int i = 0; i < ds5.Tables[0].Rows.Count; i++)
{
int courseid = Convert.ToInt32(ds5.Tables[0].Rows[i]["course_id"]);
dataGridView5.Rows.Add("..i want to add here selected index of comboboxcolumn..", ds5.Tables[0].Rows[i]["course_year"], ds5.Tables[0].Rows[i]["course_grading"], ds5.Tables[0].Rows[i]["course_auth"]);
}
如果 ComboBoxColumn
作为第一列添加到您的 DataGridView
中,那么添加单元格的值就足够了,然后它将显示为组合框中的选定内容:
dataGridView5.Rows.Add(Convert.ToInt32(ds5.Tables[0].Rows[i]["course_id"]),
ds5.Tables[0].Rows[i]["course_year"],
ds5.Tables[0].Rows[i]["course_grading"],
ds5.Tables[0].Rows[i]["course_auth"]);
注意combo box中要有值,否则会报异常
另外,您应该以这种方式填充该组合框列,您不需要循环:
SqlDataAdapter coursead = new SqlDataAdapter("select * from tbl_armycourses", longrollcon);
coursead.Fill(courseds, "tbl_armycourses");
var ComboColumn= (DataGridViewComboBoxColumn)dataGridView5.Columns[0];
ComboColumn.DisplayMember = "course_name";
ComboColumn.ValueMember = "armycourse_id";
ComboColumn.DataSource = courseds.Tables["tbl_armycourses"];
注意第一列的类型必须是DataGridViewComboBoxColumn
,否则会出现异常。
注:
通常,我建议您使用数据绑定——例如 DataTable
——并且不要以这种方式添加行。 Windows 表单中最好的功能之一是使用 Designer
和使用 DataBinding
.
我需要从 Table 1(id,name,...) 中将数据库中的不同值添加到我的 DataGridViewComboBoxColumn
中,并且必须选择它的值(name)。
我的代码:
SqlDataAdapter coursead = new SqlDataAdapter("select * from tbl_armycourses", longrollcon);
coursead.Fill(courseds, "tbl_armycourses");
for (int j = 0; j < ds5.Tables[0].Rows.Count; j++)
{
DataGridViewComboBoxCell ComboColumn = (DataGridViewComboBoxCell)(dataGridView5.Rows[j].Cells[0]);
ComboColumn.DisplayMember = "course_name";
ComboColumn.ValueMember = "armycourse_id";
ComboColumn.DataSource = courseds.Tables["tbl_armycourses"];
}
for (int i = 0; i < ds5.Tables[0].Rows.Count; i++)
{
int courseid = Convert.ToInt32(ds5.Tables[0].Rows[i]["course_id"]);
dataGridView5.Rows.Add("..i want to add here selected index of comboboxcolumn..", ds5.Tables[0].Rows[i]["course_year"], ds5.Tables[0].Rows[i]["course_grading"], ds5.Tables[0].Rows[i]["course_auth"]);
}
如果 ComboBoxColumn
作为第一列添加到您的 DataGridView
中,那么添加单元格的值就足够了,然后它将显示为组合框中的选定内容:
dataGridView5.Rows.Add(Convert.ToInt32(ds5.Tables[0].Rows[i]["course_id"]),
ds5.Tables[0].Rows[i]["course_year"],
ds5.Tables[0].Rows[i]["course_grading"],
ds5.Tables[0].Rows[i]["course_auth"]);
注意combo box中要有值,否则会报异常
另外,您应该以这种方式填充该组合框列,您不需要循环:
SqlDataAdapter coursead = new SqlDataAdapter("select * from tbl_armycourses", longrollcon);
coursead.Fill(courseds, "tbl_armycourses");
var ComboColumn= (DataGridViewComboBoxColumn)dataGridView5.Columns[0];
ComboColumn.DisplayMember = "course_name";
ComboColumn.ValueMember = "armycourse_id";
ComboColumn.DataSource = courseds.Tables["tbl_armycourses"];
注意第一列的类型必须是DataGridViewComboBoxColumn
,否则会出现异常。
注:
通常,我建议您使用数据绑定——例如 DataTable
——并且不要以这种方式添加行。 Windows 表单中最好的功能之一是使用 Designer
和使用 DataBinding
.