Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C从数据集中填充DataGridViewComboxCell并从数据库中获取所选值_C#_Winforms_Datagridview_Datagridviewcolumn_Datagridviewcomboboxcell - Fatal编程技术网

C# C从数据集中填充DataGridViewComboxCell并从数据库中获取所选值

C# C从数据集中填充DataGridViewComboxCell并从数据库中获取所选值,c#,winforms,datagridview,datagridviewcolumn,datagridviewcomboboxcell,C#,Winforms,Datagridview,Datagridviewcolumn,Datagridviewcomboboxcell,我需要将数据库中的不同值添加到表1id、名称等中的DataGridViewComboBoxColumn中,。。。并且必须已选择valuename 我的代码: SqlDataAdapter coursead = new SqlDataAdapter("select * from tbl_armycourses", longrollcon); coursead.Fill(courseds, "tbl_armycourses"); for (int j = 0; j < ds5.Tables[

我需要将数据库中的不同值添加到表1id、名称等中的DataGridViewComboBoxColumn中,。。。并且必须已选择valuename

我的代码:

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中,则添加单元格的值就足够了,然后它将显示为combobox中的所选内容:

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"]);
请注意,该值应该存在于组合框中,否则您将收到异常

此外,您还应该以这种方式填充该组合框列,您不需要循环:

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窗体中最好的功能之一是使用设计器和数据绑定。

如果添加值,如果要选择的项作为单元格值,则将选中该项。这就是您想要的吗?是的,首先从数据集中填充该列,然后从数据集中设置所选值。请告诉我您是否对答案有任何疑问,或者是否觉得它有用:亲爱的,您再次帮助了我+我很高兴听到这很有帮助: