0

dataSetに値を追加し、それをdataGridViewに表示するための基本的なプログラムを作成しました。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        DataTable table1 = new DataTable("People");
        table1.Columns.Add("id");
        table1.Columns.Add("Name");
        table1.Columns.Add("Age");
        table1.Rows.Add(1, "Jack", 18);
        table1.Rows.Add(2, "Tim", 18);

        DataSet set = new DataSet("SetPeople");
        set.Tables.Add(table1);

        dataGridView1.DataSource = set;
        dataGridView1.Update();
    }
}

試してみると何も起こらないようです。dataGridViewは空白のままです。私がどこで間違っているのか考えていますか?

4

3 に答える 3

3

これを試して

   dataGridView1.DataSource = table1;

Gridviewにデータテーブルを表示するためだけにDは必要ありません

于 2012-09-10T15:28:29.320 に答える
2

MassimilianoPelusoは正しいです。GridViewは「テーブル」を参照しますが、より具体的には、切断された方法でADO.NETを使用する場合、DataTableオブジェクトの一部であるDataColumnオブジェクトでGridViewを埋めることになります。また、dataTableをGridViewにバインドすることもできます。

詳細:ADO.NetのDataSet構造を使用すると、データベースを「テーブル」のような方法で表現し、それらのテーブルで参照を共有できます。これらはすべて、追加のメモリオーバーヘッドを犠牲にして発生しますが、これが高度にスケーラブルなアプリケーションではなく、ユーザーが毎回データベースにアクセスすることなく行を編集できるようにしたい場合は、DataSetが適しています。オプション。

DataSetの機能(テーブルリレーションシップなど)を使用していない場合は、DataTableオブジェクトを使用してそれらにデータを入力するだけで、オーバーヘッドを少し節約できます。

あなたの質問に答えるには:

GridViewは、DataTableをデータソースとして受け取ることを想定しています。そのテーブルには、複数の列を含めることができます(グリッドの列を埋めます)。次のコードを記述して、データテーブルに具体的にアクセスできます。

dataGridView1.DataSource = set.Tables["table1"]; // or by index if you prefer as there are several overloads.

さらに、上記のコードの後に​​次のコード行を追加して、データをバインドします。

dataGridView1.DataBind();

DataBind()メソッド呼び出しが欠落しているという事実は、問題の一部です。

Cシャープコーナーサイトには非常に良い例があります:

于 2012-09-10T15:59:05.957 に答える
0

これを行うこともできます:

dataGridView1.DataSource = set;
dataGridView1.DataMember = set.Tables["People"].TableName;
dataGridView1.Update();
于 2015-09-15T13:12:50.107 に答える