C# 数据表-在组合框中选择索引

C# 数据表-在组合框中选择索引,c#,datatable,datagrid,selectedindex,C#,Datatable,Datagrid,Selectedindex,是否可以在循环中的dataTable中为combobox添加selectedIndex DataGridViewComboboxColumn dataGrid = new DataGridViewComboboxColumn(); datagrid.Datasource = enumData; //this works datagrid.Name = "cmb" Datatable dt = new DataTable(); dt.Columns.Add("cmb"); for(

是否可以在循环中的dataTable中为combobox添加selectedIndex

 DataGridViewComboboxColumn dataGrid = new DataGridViewComboboxColumn();
 datagrid.Datasource = enumData; //this works 
 datagrid.Name = "cmb"

 Datatable dt = new DataTable();
 dt.Columns.Add("cmb");
 for(int i = 0, i<200, i++)
 {
    var data = GetData(i);
    DataRow r =new DataRow();
    r["cmb] = data.value; //selectedIndex??

 }
DataGridViewComboxColumn dataGrid=new DataGridViewComboxColumn();
datagrid.Datasource=enumData//这很有效
datagrid.Name=“cmb”
Datatable dt=新的Datatable();
dt.列添加(“cmb”);

对于(int i=0,i如果使用绑定到datatable的datagridview,则不会弄乱网格中的各个组合框。您可以执行以下操作(我将包括设置代码):

现在,关于它的螺母和螺栓:

dataGridView1 = new DataGridView();
dataGridView1.DataSource = sourceData;

//binding the dgv will create a couple of textbox columns, 
//now let's add a combo column to demo the binding concept


DataGridViewComboboxColumn dgvcbcGender = new DataGridViewComboboxColumn();
dgvcbcGender.Datasource = comboData; //refers to the male/female/unspecified table
dgvcbcGender.DisplayMember = "Disp"; //show john/jane/Xxxx in the combo
dgvcbcGender.ValueMember = "Valu"; //use the 1/2/3 ints as values to be stored in the sourceData table
dgvcbcGender.DataPropertyName = "Gender"; //critical! == "read the `Gender` int value of the row in `sourceData`, look it up in the `Valu` column of `comboData`
它是将组合中的项目列表与主表中的数据连接起来的最后一行。这样绑定时,我们根本不会弄乱任何组合的SelectedIndex;组合将显示与它在基行中找到的1/2/3相关的男/女/未指定(
sourceData.Gender
)-它通过在
comboData.Valu
列中查找值1/2/3来完成此操作。当您设置新的性别时,它将从
comboData.Valu
中取出相应的SelectedValue,并将其存储回行中。您将另一列绑定到
sourceData.Gender
-当您在组合框(可能必须导航到另一行)

现在只需确保将列添加到datagridview:

dataGridView1.Columns.Add(dgvcbcGender);

您的总体目标是什么?这似乎是一个XY问题。您可以这样做,但即使您更新了UI(它不会这样做)这200个索引将快速掠过,你甚至看不到它的发生。你最好在循环结束后将选定的索引设置为最后一项。如果你在selectedindexchanged事件中执行了某些操作,你最好在添加每一行时调用该操作,而不是使用事件机制。这很有效对于不是组合框的行。我不同意,它甚至不编译,但这并不能回答我的问题-作为总体目标,您实际上想做什么?是的,因为这只是代码的一部分。我想在我添加的行中为组合框绑定selectedIndex。稍后我将此datatable添加到datagridview。正如我前面所写的,另一种类型的数据可以工作例如textbox或checkbox,但当我尝试使用combobox时,我觉得不是。他想在datagrid foreach元素的组合框列中设置信息。datagrid….combobox.SelectedIndex=3;我不明白。我如何将combobox与数据行关联?我尝试了,但不起作用:/我们不使用combobox di我们按照代码设置datagridviewcomboxcolumn,然后将其添加到网格中;正是该列将创建所有组合框(我们不接触它们)。您是否将
dgvcbcGender
添加到datagridview列?我跳过了该部分,认为这很明显,但我应该将其放入-编辑是的,现在它可以工作了。谢谢。我不知道为什么我没有注意到它,为什么它在我的示例中不工作。非常感谢!
dataGridView1.Columns.Add(dgvcbcGender);