0

C#のdatagridviewに問題があります。mysql-databaseからクエリを介してデータを取得します。ただし、何らかの理由で、結果の最初の行のみがグリッドビューに表示されます。私はこのようなことをするために次のコードを使用します:

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ループの内容は1回だけ実行されます。ここで質問する前に、私もその事実について疑問に思っていました。しかし、MySQL-Clientでクエリを実行すると、複数の行が返されます。

更新2: whileループのコンテンツ全体がコメント化されている間、ループはクエリ結果に行があるのとまったく同じ時間に実行されることに気づきました。何か案は?

更新3: 後のすべてのようです

dataGridView1.Rows.Add(dataset);

実行されません。ループ内だけでなく、関数全体でも。しかし、なぜ?

解決した問題: ここに投稿されたコードに問題はありませんでした。dgvの行が入力されたときに、コードの残りの部分で何かを実行するイベントが発生しました。それが起こったとき、私はループが壊れたと思います。そのイベントを削除した後、dgvは適切に入力されました。

4

3 に答える 3

1

グリッドのRowCountプロパティを確認します。必要な行数まで増やす場合は、1に設定することもできます。

于 2013-01-15T15:46:38.267 に答える
1

を使用し、DataAdapterそれを使用してDataTableにデータを入力する必要があります。このようにデータを取得するためのメソッドを作成します:-

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;
于 2013-01-15T16:10:12.987 に答える
0

別の簡単な方法があります。データセットの代わりにDataTableを使用して、dataGridViewのデータソースをそのDataTableに設定できます。それはあなたの問題を解決し、またそれを使用して列ヘッダーを簡単に設定することができます。

于 2013-01-15T15:10:43.817 に答える