- - PR -
DataGridのCheckBox列にDBのあるテーブルの主キー値をバインドしたい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-10-14 20:14
いつも参考にさせていただいています。
早速ですが、DataGridを使いこなせず困っているのでぜひお知恵をお貸しください。 データベースにAテーブルがあり、Aテーブルを参照するDataSetAを作成します。 DataGridはDataSetAをバインドさせて、テーブルの中身を表示させるまでできました。 ここで、DataGridにチェックボックスを持つテンプレート列を追加して、Aテーブルの主キー値(int)をチェックボックスのvalueにもつようにしたいのですが、どのようにすればよいか分かりません。そもそも<asp:checkbox>にはvalueプロパティがないですね。 やりたいことはテーブルの中のすべてのレコードにチェックボックスをつけて表示し、 主キー列は非表示にして隠し、チェックのON/OFFを主キー値で取得したい、ということなんです。 どなたか、似たようなケースで他のやり方でもよいので実現方法をご存知の方、ぜひ詳しく教えてください。 よろしくお願いします。 | ||||
|
投稿日時: 2003-10-15 00:11
value='<%# ...%>と書いてやれば、Attributes["value"]で読めますよ。 HTMLコントロールのチェックボックスならvalueプロパティありますから やりたいことはこちらでも十分だと思いますが。 | ||||
|
投稿日時: 2003-10-15 19:27
返信ありがとうございます。
checkboxへの簡単なバインドの仕方はないようですね。 教えていただいた方法を検討してみます。 どうもありがとうございました。 | ||||
|
投稿日時: 2003-10-17 09:59
解決済みかもしれませんが、気になったので実装してみました。
ぴでさんの言うとおりHTMLではcheckboxにvalueがあります。でも CheckBoxコントロールには無いんですよね。知りませんでした。 そこで無理やりCheckBoxコントロールに"value"属性をくっつけて みたのですが、吐き出されたHTMLには可視できるvalueがどこにも 見当たりませんでした。でもボタンか何かでポストバックさせて みるとしっかりvalue属性に値が入っています。viewstateに 入っているのでしょうか?確認していませんので分かりませんが。 コードでコメントアウトしてあるAttributes("USER_ID")なる実装で こちらも勝手に属性を付けてみましたが、こちらはしっかり可視 出来る形でHTMLに吐き出されていました。
| ||||
|
投稿日時: 2003-10-17 12:06
"value"は予約語にでもなっているからHTMLには出力されないんですかね?
ViewStateにはしっかり入っていました。 チェックボックスをチェックしてsubmitする時は"name=value"の形でポストされますが、 HTML上のチェックボックスにvalue属性が無い場合はIEがデフォルト値"on"をセットし、 "grid:_ctl2:chk1=on"のような形でポストされます。 HTMLコントロールを使えば、valueプロパティもあり、 "grid:_ctl2:chk1=[設定したvalue]"のように取得できますから apuさんのやりたいことならこれでも十分かと思いました。 Webコントロールを使うとViewStateに格納されるものが多く無駄な場合もあるため、 適宜HTMLコントロールを使うことを検討してみるとよいと思います。 | ||||
|
投稿日時: 2003-10-17 14:32
ophiuchusさん、ぴでさん、ありがとうございます。
HTMLのCheckBoxを使ってみたり、いろんな試行錯誤をした結果、 主キー列をVisible=falseにして、GridItemをひとつずつトレースして、 CheckBoxがチェックされているItemの主キー列の値を取得する、 という方法にしました。 これだと、クライアントスクリプトではVisible=false の列の値がわからなくて困るんですよね…。 クライアントでも値をとりたいときは、お二人のご意見を参考にきちんと作りたいと思います。
こちらも同感です。ViewStateの情報量はきちんと管理しないといけないですね。 まだまだ初心者なので、今後もよろしくお願いします。 今回はありがとうございました。 |
1