none
DataGridViewの初期設定でグリッドを表示させたい RRS feed

  • 質問

  • のですが、どうしたらいいでしょうか。

    具体的には、VS2005でDataGridViewのデータがバインドする前に、空の表を表示させたいのですが

    どうしたらいいのでしょうか。(デフォルトではDrag&Dropすると表の部分が灰色になっているところを

    空の表を表示させる事は出来るのでしょうか)。プロパティを調べましたが、見当たりませんでした。

    よろしくお願いします。

    2007年12月24日 3:17

回答

  •  

    何を?どうしたいのか?よくわからないですが?_

    DataGridViewはデータバインドしないと表自体は表示されませんが、・・・・・

    空の表を表示させ・・そこに表があることを見せたいのでしょうか?

    最初、空白のデータをバインドさせるなどあると思いますが?

    まず、WebFormでしょうかWindowsFormでしょうか?

    それによっても、いろいろな方法があるとおもいますが・・・・もう少し、詳しく書かないと

    何をどうしたいのか、わからないと思いますが

    2007年12月24日 7:16
  • KentaroM さん、こんにちは。

    DataGridView なので Windows Form だと解釈しました。(Web なら GridView)
    空の Grid を表示したいのであれば、空の DataTable (DataSource) でバインドすれば良いです。

    バインド前の初期状態は Nothing の状態なわけですが、KentaroM さんがやりたいのは Empty にあたります。

    2007年12月24日 7:40
  • じゃんぬさんが言われている空のDataTableを補足すれば、列のデータが全て空白かNullであるレコードを何行か含むDataTableということだと思いますが、データベースのテーブルに空白やNullを許さない列がある場合は、DataTableの列はstring型にするなどして、きちんと入力チェックをした後にデータベースに書き戻す必要があるでしょう。

    2007年12月25日 2:01
    モデレータ

すべての返信

  •  

    何を?どうしたいのか?よくわからないですが?_

    DataGridViewはデータバインドしないと表自体は表示されませんが、・・・・・

    空の表を表示させ・・そこに表があることを見せたいのでしょうか?

    最初、空白のデータをバインドさせるなどあると思いますが?

    まず、WebFormでしょうかWindowsFormでしょうか?

    それによっても、いろいろな方法があるとおもいますが・・・・もう少し、詳しく書かないと

    何をどうしたいのか、わからないと思いますが

    2007年12月24日 7:16
  • KentaroM さん、こんにちは。

    DataGridView なので Windows Form だと解釈しました。(Web なら GridView)
    空の Grid を表示したいのであれば、空の DataTable (DataSource) でバインドすれば良いです。

    バインド前の初期状態は Nothing の状態なわけですが、KentaroM さんがやりたいのは Empty にあたります。

    2007年12月24日 7:40
  • じゃんぬさんが言われている空のDataTableを補足すれば、列のデータが全て空白かNullであるレコードを何行か含むDataTableということだと思いますが、データベースのテーブルに空白やNullを許さない列がある場合は、DataTableの列はstring型にするなどして、きちんと入力チェックをした後にデータベースに書き戻す必要があるでしょう。

    2007年12月25日 2:01
    モデレータ
  • oshieteさん

    DataGridViewと書いてある事からWindows Formである事がわかるといいよ。

     

    traemiyaさん、じゃんぬさん

    アドバイスありがとうございます。

    空のDataTableをバインドさせるという事で以下の様にしてみました。

    Form1_Loadイベント内で、

    DataTable dtable = new DataTable();
                dtable.Columns.Add("team", typeof(string));
                dtable.Columns.Add("player", typeof(string));
                dtable.Columns.Add("age", typeof(string));

     

    for (int i = 0; i < 10; i++)
                {
                    DataRow drow = dtable.NewRow();
                    drow["team"] = "";
                    drow["player"] = "";
                    drow["age"] = "";
                    dtable.Rows.Add(drow);
                                }

           dataGridView2.DataSource = dtable;

     

    として、10行空の表を作成する事が出来ました。

    プロパティで設定が出来ないのでコードを書く必要があるんですね。

    ありがとうございました。

     

    PS:興味深い事がわかったのですが、ASP.NETのGridView等にデータをバインドさせるには

    GridView1.DataSource = dtable;

    GridView1.DataBind();

    の2行が必要なのに、Windows Formでは

    DataGridView1.DataSource = dtable;

    の一行でバインドされてたんですね。最近ASP.NETを会社で使っているので、見落として

    ました。

     

    2007年12月25日 2:22
  •  KentaroM さんからの引用

    PS:興味深い事がわかったのですが、ASP.NETのGridView等にデータをバインドさせるには

    GridView1.DataSource = dtable;

    GridView1.DataBind();

    の2行が必要なのに、Windows Formでは

    DataGridView1.DataSource = dtable;

    の一行でバインドされてたんですね。最近ASP.NETを会社で使っているので、見落として

    ました。

     

    ASP.NETの場合、DataBindingイベントを起こさなければ、バインドされているコントロールが、そのバインドされている値を評価しません。このDataBindingイベントを起こすのがDataBind()です。一方、Windowsフォームの場合は、データソース側で変更があったことをバインドしているコントロールに知らせることができるので、このようなことが必要ありません。

    2007年12月25日 10:12
    モデレータ
  • こんにちは。中川俊輔 です。

     

    oshieteさん、じゃんぬねっとさん、trapemiyaさん、大変参考になる回答ありがとうございます。

     

    KentaroMさんへ

    問題が解決されたようなので、oshieteさん、じゃんぬねっとさん、trapemiyaさんの回答へ

    回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    問題解決につながる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

     

    KentaroMさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年1月10日 5:40