C#:DataGridView仅显示一行

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

我对C#中的datagridview有问题。我通过查询从mysql数据库获取数据。但由于某些原因,gridview中只显示结果的第一行。我使用以下代码来完成这些工作:

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被正确填充。”