- - PR -
Container.DataItemの判定をしてDataGridに表示したい
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-06-24 11:42
VS.NET2002でASP.NETの開発をしております。言語はC#です。
DataGridでデータベースから取ってきた値をテンプレートを使って バインドさせているのですが、データベースから取ってきた値がEmpty値 の場合、その行が潰れてしまいます。Empty値の場合は「 」を 代わりに記述したいのと思っています。 <%# DataBinder.Eval(Container.DataItem, "hoge_name")%> hoge_nameが空白の場合、「 」を吐き出したいのです。 ですが、どのように記述したらよいのか分からなくて困っています。 aspxファイルでのif文の書いてみましたが、分からなく、コードビハインド ファイルに変換するパブリック関数を書いてみても無理でして。。。 (多分、書き方が悪かったのだとおもいますが) データベースからデータを取得段階で、空白だったら に変換する という事は勿論可能なのですが、SQL文に画面の制御的なものは できるだけ入れたくないと考えております。 すみませんが、アドバイスをお願いします。 | ||||||||
|
投稿日時: 2003-06-24 15:49
こんにちわ。
aspxファイルのbodyタグにonloadイベントを追加して、 JavaScriptのソースを記述してみるというのはいかがでしょうか? 非常に安直なソースですが、サンプルをのせてみます function BodyLoad() { for(i=0; i<document.all.length; i++) { if(document.all(i).tagName == "TD") { if( document.all(i).innerHTML == null || document.all(i).innerHTML == "" ) { document.all(i).innerHTML = " "; } } } } 以上、お役に立てれば幸いです | ||||||||
|
投稿日時: 2003-06-24 19:43
ありがとうございます、確かにバッチリできました。
document.allですべてのタグが取得できるんですね。 このような使い方もできるなんて、JavaScriptは奥が深いですね。 非常に勉強になります。 この手は奥の手としてとっておいて、できればサーバサイドの処理で実装したい と考えております。(教えてもらったのにスミマセン。) ネットを検索していて、下記のような記述があるのを発見しました。 <ItemTemplate> <%# iif((DataBinder.Eval(Container.DataItem, "count") = 0), "無", "在") %> </ItemTemplate> 実際はこのiifを使っても同じようにやってもできなかったのですが、 実現は可能であると思って、(希望して!?)試行錯誤しております。 | ||||||||
|
投稿日時: 2003-06-25 09:18
aspxにロジックを書くと分かりにくいので、いつもはこのように書いています。
| ||||||||
|
投稿日時: 2003-06-25 09:26
三項演算子なんかでむりやり一行にできなくはないでしょうが、
メソッドを使うのが結局は、すっきりするのでは? <%# Empty2sp(DataBinder.Eval(Container.DataItem, "hoge_name"))%> でコードビハインドに protected string Empty2sp(object obj) { //適当な処理 } スペースに余裕がある場合は、 aspxに問答無用で を書いてしまうのが、一番楽ですが。 | ||||||||
|
投稿日時: 2003-06-25 09:27
かぶった
| ||||||||
|
投稿日時: 2003-06-25 10:25
ぴで様、仕様書無しさん様、ばっちりできました、ありがとうございます。
前にコードビハインド側で書いていたときには、以下の書き方でエラーでした。 失敗例 aspx側 <%# changes(DataBinder.Eval(Container.DataItem,"YOSNOB"))%> コードビハインド側 public string changes(string strIn) { if(strIn.Trim()=="") { return strIn.Trim(); } else { return " "; } } 今回、引数をDataItemを受けることによって正常に処理できました。 最初、ぴで様のソースをコピペで使っていて、うまく行かなくて あせったのですが、「if(strVal != "")」の部分が「if(strVal == "")」 にして期待通りの動きをしてくれました。 ありがとうございました! | ||||||||
|
投稿日時: 2003-06-25 10:42
<%# changes(DataBinder.Eval(Container.DataItem,"YOSNOB").ToString())%> ですね!
|
1|2|3
次のページへ»