- - PR -
DataGridの制御: 行単位にボタンの表示、非表示方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-03-17 14:44
皆さま始めまして。
現在、DataGridを用いたWebフォームで悩んでいます。 <前提> ・1つの行は、単純に「名称」「制御フラグ」で構成されたテーブル(DataView)を DataSourceにセットしています。 ・制御フラグには True/False の値を持たせています。 <実現したいこと> 制御フラグが False ならば 名称のみ表示 制御フラグが True ならば 名称、ボタンを表示 この様な処理(表示)は可能でしょうか? ぜひアドバイスをお願いいたします。 なお、VisualStudio.net + C# で開発しています。 | ||||
|
投稿日時: 2003-03-17 16:29
はじめまして なぬと申します
テンプレートカラムを使用して実現可能です。 1.テンプレートカラムを追加 2.ItemTemplateにボタンを置く 3.(DataBindings)プロパティの... 4.連結可能プロパティからVisibleを選択 5.カスタム連結でDataBinder.Eval(Container, "DataItem.制御フラグ") 手書きですと
といった感じでどうでしょうか? カスタムなデータ連結は使う機会が多いので覚えておくと便利だと思います。 それでは、以上よろくお願いします。 参考 プログラミングASP.NET 第10回 Webフォームにおけるデータ連結 Part2 DataListコントロール リンク修正(^^; [ メッセージ編集済み 編集者: なぬ 編集日時 2003-03-17 16:47 ] | ||||
|
投稿日時: 2003-03-17 16:28
テンプレートカラムで、該当のボタンのVisible属性をデータバインドすればOKです。
<asp:TemplateColumn> <ItemTemplate> <asp:Label runat=server Text='<%# DataBinder.Eval(Container,DataItem.名称) %>'></asp:Label> <asp:Button runat=server value="ボタン" visible='<%# DataBinder.Eval(Container,"DataItem.制御フラグフィールド名")%>' /> </ItemTemplate> </asp:TemplateColumn> :同時に書込みがありましたが、私のは<ItemTemplate>と<%# %>が抜けていました(^^; [ メッセージ編集済み 編集者: いのつち 編集日時 2003-03-17 16:34 ] | ||||
|
投稿日時: 2003-03-17 18:13
なぬさま、いのつちさま、ご回答ありがとございます。
おかげで無事解決しました! なんとなーく、Templateタグ使うんだろうなぁ・・・という気はしてたんですけど、 具体的な記述方法が解らなかったので大変参考になりました。 ※蛇足※ お二人のコードでは、 DataBinder.Eval(Container, "DataItem.制御フラグのフィールド名") となっておりましたが、 Convert.ToBoolean で変換をした上でVisibleにセットしてあげないと キャストエラーが出てしまい、返事まで時間がかかってしまいました。 DB(MSDE)側の「制御フラグ」フィールドは、 samllint型で定義しているのですが、VBみたく勝手に型変換してくれないんですね・・・。 |
1