行不能插入到窗体数据网格中

本文关键字:数据网 网格 数据 窗体 不能 插入 | 更新日期: 2023-09-27 18:15:22

我想使用datatable插入数据网格,并在程序中定义网格列。请帮助我这个代码有什么问题??出现以下错误"无法强制转换系统类型的对象"。到系统类型的字符串。String [] "

 enter code here 
SqlConnection connection;
    string query;
    SqlCommand cmd;
    SqlDataAdapter da;
    DataSet ds;
    DataRow dRows;
    public void ViewGrid()
    {
    connection = new SqlConnection(ConnString);
        try
        {
            connection.Open();
            query = @"SELECT * FROM TBLWorkers";
            //cmd = new SqlCommand(query, connection);
            da = new SqlDataAdapter(query, connection);
            ds = new DataSet();
            da.Fill(ds, "Workers");
            int MaxRows = ds.Tables["Workers"].Rows.Count;
            label1.Text = MaxRows.ToString();
            dRows = ds.Tables["Workers"].Rows[0];

            // Create an unbound DataGridView by declaring a column count.
            dataGridView1.ColumnCount = 4;
            dataGridView1.ColumnHeadersVisible = true;
            // Set the column header names.
            dataGridView1.Columns[0].Name = "Recipe";
            dataGridView1.Columns[1].Name = "Category";
            dataGridView1.Columns[2].Name = "Main Ingredients";
            dataGridView1.Columns[3].Name = "Rating";
            object[] rows1 = new object[] { dRows[0].ToString(), dRows[1], dRows[2], dRows[3] };
            foreach (string[] rowArray in rows1)
            {
                dataGridView1.Rows.Add(rowArray);
            }
        }
        catch (Exception x)
        {
            MessageBox.Show(x.Message);
            connection.Close();
        }
    }

行不能插入到窗体数据网格中

我想说rowArray是一个字符串而不是字符串[]。

您正在迭代object[]并将该数组中的元素视为string[],并且该数组的元素0肯定是string而不是string[]

认为你打算做的,基于你所写的,是插入一个单行到DataGridView,因为那是所有的dRows持有是一个表行。你的代码部分来自这里的MSDN示例,如果你看看那个示例是如何工作的,你会看到他们建立了一堆string[]来添加未绑定行到DataGridView。

这就是你想在这里做的吗?添加未绑定行?你已经有DataTable了。您可以使用数据绑定来解决这个问题,而不是从数据库中检索数据,然后将其复制到object[]中,只是为了转过身并将其放入未绑定的DataGridView中。

你可以这样做:

string[] myRow = new string[] { dRows[0].ToString(), dRows[1].ToString(), dRows[2].ToString(), dRows[3].ToString() };
dataGridView1.Rows.Add(myRow);

,我认为这是可行的。没测试过,但我想应该没问题。但是如果我这样做的话,我可能会设置数据绑定