- - PR -
DataGridのDataViewソートとテンプレート列
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-13 17:28
C#でWebアプリケーションを作成しています。
チェックボックスを配置したDataGridがあるのですが、 DataViewを使用してソートを行うとDataTableの様にRowsがない(当たり前) ので僕のやり方ではチェックボックスのオンオフを制御できません。 よって現在はソート機能のないものになっています。 DataView でソートしたものをそのままDataTableに反映できたら良いと思うのですが 方法がわかりません、良い方法がありましたらお教えください。 @ソートは下記の通りDataViewかDefaultViewを使用して行っています。 <DataTable>.DefaultView.Sort = e.SortExpression; <Grid>.DataSource =<DataTable>.DefaultView; <Grid>.DataBind(); Aチェックボックスは下記のようにFindControlを使用してDataTableを読んで配置しています。 for (int i=0;i< <DataTable>.Rows.Count;i++) { { switch(<DataTable>.Rows[i]["YUKO_FLG"].ToString()) { case"0": ((CheckBox)<Grid>.Items[i].Cells[0].FindControl("Chk_Yuko")).Checked=false; break; case"1": ((CheckBox)dgr_Grid.Items[i].Cells[0].FindControl("Chk_Yuko")).Checked=true; break; } } しかしDataViewにはRowがないためAを実行することは出来ません。 以上 よろしくお願いします。 | ||||
|
投稿日時: 2005-07-13 17:46
テンプレートに
とするのが楽なんだけど、DataBind 以外のタイミングで判断したいのであれば <DataTable>.DefaultView.Count や <DataTable>.DefaultView[i]["YUKO_FLG"] を 使えばいいんじゃないでしょうか。 | ||||
|
投稿日時: 2005-07-14 10:08
にしざきさん、ありがとうございます。
にしざきさんのおっしゃられる(ASP.NETというのでしょうか?)方法でやりたいと思います。 「ASPがデータを読んで、評価しチェックをつけてくれる」という事ですよね。 そこで早速以下の通りやって見たのですが、うまくチェックが入りません。 どこが間違った点があると思うのですがご指摘ください。 @DataGridのColumns{12}にYUKO_FLGのデータが格納項目"YUKO_FLG"を作成しました。 AHTMLデザイナーで <asp:CheckBox id="Chk_Yuko" runat="server"></asp:CheckBox> を <asp:CheckBox id='Chk_Yuko' runat='server' Checked='<%# DataBinder.Eval(Container.DataItem, "YUKO_FLG") == "1" %>' ></asp:CheckBox> としました。 以上 よろしくお願いします。 | ||||
|
投稿日時: 2005-07-14 11:18
おっと。
書式無の DataBinder.Eval は object 型を返すようでした。とすると、
なのかな? | ||||
|
投稿日時: 2005-07-14 11:37
にしざきさん、ありがとうございました。
コード: -------------------------------------------------------------------------------- DataBinder.Eval( ... ).ToString() == "1" -------------------------------------------------------------------------------- でうまく行きました。 非常に助かりました。ありがとうございました。 | ||||
|
投稿日時: 2005-07-15 10:50
いつもお世話になっております。
私も同じようなことで悩んでいます。(VBでWebアプリを作成しています) そこで同じようにやってみました。 --------------------------------------------------------- <asp:CheckBox id=CheckBox1 runat='server' Checked='<%# DataBinder.Eval(Container.DataItem, "YUKO_FLG") == "1" %>' ></asp:CheckBox> --------------------------------------------------------- DataGridにテンプレートでチェックボックスを作成しています。 チェックボックスのIDは「CheckBox1」です。 テーブルにはチェックボックスの項目はありません。 ここで一つ分からないことがあります。 この"YUKO_FLG"ってどこで設定するのでしょうか? どうぞよろしくお願い致します。 | ||||
|
投稿日時: 2005-07-15 21:27
YUKO_FLG は元のテーブルのフィールド名です。
nori さんがチェックボックスに対応させたいフィールド名に置き換えてください。 マシューさんは、このフィールドに0か1かを格納して、これをチェックボックスの チェック状態に対応させるようにして表示したようです。 また、VB.NET で作成しているのであれば、おそらく aspx ファイルのコンパイル 結果も VB.NET にするのでしょう(<@Page language="VB">ですよね)から、 比較は == ではなく = で行うことになるでしょう。 | ||||
|
投稿日時: 2005-07-19 10:51
にしざき様、ありがとうございます。
やはりDataGridの元となるテーブルにフィールドを 設けないとダメなのでしょうか? できればテーブルには持たせたくないのです。 ・・・もしかして、テーブルにフィールドを設けなくても DataGridを表示するためのSQL文でこの項目を用意して あげればいいのかなぁ? ちょっと試してみます♪ 比較演算子は=ですよネ。基本的なところでした;; |
1|2|3
次のページへ»