C#:DataGridView仅显示一行
我对C#中的datagridview有问题。我通过查询从mysql数据库获取数据。但由于某些原因,gridview中只显示结果的第一行。我使用以下代码来完成这些工作:C#:DataGridView仅显示一行,c#,mysql,visual-studio,datagridview,C#,Mysql,Visual Studio,Datagridview,我对C#中的datagridview有问题。我通过查询从mysql数据库获取数据。但由于某些原因,gridview中只显示结果的第一行。我使用以下代码来完成这些工作: MySqlCommand command = new MySqlCommand(query, Globals.Connection); reader = command.ExecuteReader(); while (reader.Read()) { obje
MySqlCommand command = new MySqlCommand(query, Globals.Connection);
reader = command.ExecuteReader();
while (reader.Read())
{
object[] dataset = new object[7];
dataset[0] = reader["sto_name"];
dataset[1] = reader["esss"];
dataset[2] = reader["onl_name"];
dataset[3] = reader["rpc_id"];
if (reader["datum_aufstellung"].ToString() != "0")
{
dataset[4] = getDate(reader["datum_aufstellung"]);
}
else
{
dataset[4] = "Kein Datum gesetzt";
}
if (reader["datum_abbau"].ToString() != "0")
{
dataset[5] = getDate(reader["datum_abbau"]);
}
else
{
dataset[5] = "Kein Datum gesetzt";
}
dataset[6] = reader["id"];
dataGridView1.Rows.Add(dataset);
}
它起作用了,前面几行代码^^
你知道问题出在哪里吗
更新:
while循环的内容只执行一次。在我问我的问题之前,我也在想这个事实。但是如果我在MySQL客户机中执行查询,它将返回多行
更新2:
我注意到,虽然while循环的全部内容都被注释,但循环的执行时间与查询结果中的行完全相同。有什么想法吗
更新3:
看来以后一切都好了
dataGridView1.Rows.Add(dataset);
没有执行。不仅在循环中,而且在整个函数中。
但是为什么呢
问题已解决:
这里发布的代码没有问题。我在代码的其余部分有一个事件,当输入dgv中的一行时,它执行了一些操作。我想当这种情况发生时,这个循环破裂了。删除该事件后,dgv被正确填充。还有另一种简单的方法。
您可以使用DataTable而不是dataset,并将dataGridView的数据源设置为该DataTable。
它将解决您的问题,并且使用它您可以轻松设置列标题。检查网格上的RowCount属性。如果是这样的话,可以将其设置为1,将其增加到所需的行数。您应该使用
DataAdapter
并使用它填充数据表。创建一种获取数据的方法,如下所示:-
public DataTable GetDataTable()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection (@"YourCOnnectionString"))
{
using (SqlCommand cmd = new SqlCommand (query, con))
{
var adaptor = new SqlDataAdapter ();
adaptor.SelectCommand = cmd;
con.Open();
adaptor.Fill(dt);
return dt;
}
}
}
然后,您可以使用DataGrid引用它:-
DataTable Result = GetDataTable();
DatagridView1.DataSource = Result;
while循环执行完毕后,dataGridView1.Rows的计数是多少?我知道这听起来很明显,但您从命令中读取了多少行?您是否尝试过在while()循环中设置断点以检查它是否不止一个?但我的方法也应该可以工作。我想坚持我的方式。我不能,因为“更新3”。dataGridView1.Rows.Add(数据集)之后的所有内容;不会被执行。我想继续使用MySql-Classes。然后您需要做的就是用我的前缀更改这些命令。好的。现在我得到了一个空的datagridview,尽管datatable有正确的内容。您是否发现了这个问题,或者这个问题仍然存在?如果DataTable不是null引用的对象,那么它应该可以正常工作。“问题解决了:这里发布的代码没有问题。我在代码的其余部分有一个事件,当输入dgv中的一行时,它执行了一些操作。我想当发生这种情况时,循环中断。删除该事件后,dgv被正确填充。”