行不能插入到窗体数据网格中
本文关键字:数据网 网格 数据 窗体 不能 插入 | 更新日期: 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);
,我认为这是可行的。没测试过,但我想应该没问题。但是如果我这样做的话,我可能会设置数据绑定