Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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#_.net_For Loop - Fatal编程技术网

C# 动态对象名

C# 动态对象名,c#,.net,for-loop,C#,.net,For Loop,要使用循环最小化此代码 DataGridViewComboBoxColumn combo_1 = new DataGridViewComboBoxColumn(); string name_1 = "name_1"; string name1 = "Name 1"; combo_1.Name = name_1; combo_1.HeaderText = name1; DataGridViewComboBoxColumn combo_2 = new DataGridViewComboBoxCol

要使用循环最小化此代码

DataGridViewComboBoxColumn combo_1 = new DataGridViewComboBoxColumn();
string name_1 = "name_1";
string name1 = "Name 1";
combo_1.Name = name_1;
combo_1.HeaderText = name1;

DataGridViewComboBoxColumn combo_2 = new DataGridViewComboBoxColumn();
string name_2 = "name_2";
string name2 = "Name 2";
combo_2.Name = nazwa_2;
combo_2.HeaderText = nazwa2;

DataGridViewComboBoxColumn combo_3 = new DataGridViewComboBoxColumn();
string name_3 = "name_3";
string name3 = "Name_3";
combo_3.Name = name_3;
combo_3.HeaderText = name3;

DataGridViewComboBoxColumn combo_4 = new DataGridViewComboBoxColumn();
string nazwa_4 = "name_4";
string nazwa4 = "Name 4";
combo_4.Name = name_4;
combo_4.HeaderText = name4;
对不起,问题不清楚,我会尽力解释。。。 我想在datagridview1中添加表

// define combobox column
DataGridViewComboBoxColumn combo_1 = new DataGridViewComboBoxColumn();
string name_1 = "name_1";
string name1 = "Name 1";
combo_1.Name = name_1;
combo_1.HeaderText = name1;

// set value to combobox column
pol.Open();
string list_value = "SELECT value FROM table ORDER BY name ASC";
SqlCommand cmd = new SqlCommand(list_value, conn); //conn is defined above in code
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string name = rdr.GetString(0);
combo_1.Items.Add(name); / 
}
pol.Close();


// add all column
dataGridView1.Columns.Add("name_column_1", "Name");
dataGridView1.Columns.Add("name_column_2", "Forname");
int index = 2;
dataGridView1.Columns.Insert(index, combo_1);

//add value to cell
DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[index];
cell.Value = dt.Rows[i].ItemArray[index];
对于“combo_2”、“combo_3”等,我将不得不做一些片段,这些片段只在“_1”中有所不同

如果我可以使用for循环来添加combo_1、combo_2、combo_3

//define combobox
DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
for (int i = 1; i <= number_column; i++)
{
string name_1 = "name_" + i;
string name1 = "Name " + i;
combo_1.Name = name_1;
combo_1.HeaderText = name1;
}
//add column
for (int i = 1; i <= liczba_kolumn; i++)
{
int nr = 2;
dataGridView1.Columns.Insert(nr, combo);
nr= nr + 1;
}
//set value
for (int i = 0; i < dt.Rows.Count; i++)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells[0].Value = dt.Rows[i].ItemArray[0];
dataGridView1.Rows[i].Cells[1].Value = dt.Rows[i].ItemArray[1];

for (int j = 1; j <= number_column; j++)
{
int nr = 2;
DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[nr];
cell.Value = dt.Rows[i].ItemArray[nr];
nr = nr + 1;
}
}
//定义组合框
DataGridViewComboBoxColumn组合=新建DataGridViewComboxColumn();

对于(inti=1;i我不确定我是否理解这个问题,但我将尝试一下。。。 让我们从您的错误开始:

错误:其他信息:指定的列已属于 DataGridView控件

我怀疑这是因为这两条线:

int index = 2;
dataGridView1.Columns.Insert(index, combo);
您是想使用for循环中的“i”吗?还是想在for循环之外声明
索引
(我看到您在下面增加它)

我还没有检查语法,但至少应该很接近


这就是你想要的吗?

谢谢PhatWrat,你帮我解决了这个问题

            pol.Open();
        SqlDataAdapter list_adapter = new SqlDataAdapter("SELECT value FROM box ORDER BY value ASC", pol);
        DataTable list_dt = new DataTable();
        list_adapter.Fill(list_dt);

        string[] items = new string[list_dt.Rows.Count];

        for (int i = 0; i < list_dt.Rows.Count; i++)
        {
            items[i] = list_dt.Rows[i][0].ToString();
            //MessageBox.Show(list_dt.Rows[i][0].ToString());
        }
        pol.Close();

        int index = 2;
        for (int i = 1; i <= number_of_columns; i++)
        {
            dataGridView1.Columns.Insert(index, new DataGridViewComboBoxColumn
            {
                Name = "name_" + i,
                HeaderText = "Name " + i,
                DataSource = items
            });
            index = index + 1;
        }

            pol.Open();
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM table ORDER BY name ASC", pol);
        DataTable dt = new DataTable();
        adapter.Fill(dt);

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            dataGridView1.Rows.Add();
            dataGridView1.Rows[i].Cells[0].Value = dt.Rows[i].ItemArray[0];
            dataGridView1.Rows[i].Cells[1].Value = dt.Rows[i].ItemArray[1];
            int index_2 = 2;
            for (int j = 1; j <= number_of_columns; j++)
            {
                DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[index_2];
                cell.Value = dt.Rows[i].ItemArray[index_2];
                index_2 = index_2 + 1;
            }

        }
        pol.Close();
pol.Open();
SqlDataAdapter list_adapter=newsqldataadapter(“按值ASC从框中选择值”,pol);
DataTable list_dt=新DataTable();
列表适配器填充(列表dt);
string[]items=新字符串[list_dt.Rows.Count];
对于(int i=0;i对于(int i=1;我请尝试编辑,这没有多大意义…
combo
来自哪里…?您是否意识到每次使用
index
它都有相同的值
2
?C有数组、字典等。请使用它们。
int index = 2;
for (int i = 1; i <= number_of_columns; i++)
{
    dataGridView1.Columns.Insert(index, combo);
    index = index + 1; // or this could be index++;
}
List<DataGridViewComboBoxColumn> myColumns = new List<DataGridViewComboBoxColumn>();
for(int i=0; i < (the number you want); i++)
{
     DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
     combo.Name = "name_" + i;
     combo.HeaderText = "Name " + i;
}
for(int i=0; i < (the number you want); i++)
{
     dataGridView1.Columns.Insert(i, new DataGridViewComboBoxColumn{
                                      Name = "name_" + i,
                                      HeaderText = "Name " + i});
}
            pol.Open();
        SqlDataAdapter list_adapter = new SqlDataAdapter("SELECT value FROM box ORDER BY value ASC", pol);
        DataTable list_dt = new DataTable();
        list_adapter.Fill(list_dt);

        string[] items = new string[list_dt.Rows.Count];

        for (int i = 0; i < list_dt.Rows.Count; i++)
        {
            items[i] = list_dt.Rows[i][0].ToString();
            //MessageBox.Show(list_dt.Rows[i][0].ToString());
        }
        pol.Close();

        int index = 2;
        for (int i = 1; i <= number_of_columns; i++)
        {
            dataGridView1.Columns.Insert(index, new DataGridViewComboBoxColumn
            {
                Name = "name_" + i,
                HeaderText = "Name " + i,
                DataSource = items
            });
            index = index + 1;
        }

            pol.Open();
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM table ORDER BY name ASC", pol);
        DataTable dt = new DataTable();
        adapter.Fill(dt);

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            dataGridView1.Rows.Add();
            dataGridView1.Rows[i].Cells[0].Value = dt.Rows[i].ItemArray[0];
            dataGridView1.Rows[i].Cells[1].Value = dt.Rows[i].ItemArray[1];
            int index_2 = 2;
            for (int j = 1; j <= number_of_columns; j++)
            {
                DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[index_2];
                cell.Value = dt.Rows[i].ItemArray[index_2];
                index_2 = index_2 + 1;
            }

        }
        pol.Close();