- - PR -
FormView(ItemTemplate上のLabel)の編集について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-11-14 20:35
FormViewについて質問させて頂きます。
<前提> 言語:ASP.NET 2.0 (VB.NET) 環境:VisualStudio2005 DB:Oracle 10g <要件・ご質問> FormViewを使用し、ItemTemplateに追加されたLabelにバインドされている値を編集したいのですが、その方法が分かりません。 (例.先頭が"9"の文字列を"非表示"と編集) ご教示頂ければ幸いです。 <現状> aspx.vbファイルにて、当該FormViewのDataBound時(FormView_DataBoundメソッド内で)、FormView.DataItemプロパティに編集後の文字列をセットしたが、デバッグの結果、編集されないままの文字列が画面表示される。 また、FormView.Rowプロパティを使用しようとしたが、その方法が分からない。「Row.Cells(0).Controls.Add(-編集後文字列-)」とすると、編集後文字列は画面表示されるが、新規にLabelが追加されてしまい、希望通りの画面配置が実現できない。 拙い文章で大変恐縮ではございますが、宜しくお願い申し上げます。 |
|
投稿日時: 2006-11-14 22:04
聞いてばかりというのも何ですので、たまには回答してみることにします。
ただ、FormViewは私も勉強を始めようとしている段階ですので、もっと適当な方法があるとかもしれません。 私の場合、「先頭が"9"の文字列を"非表示"と編集する」"だけ"であれば、のすけさんがやられている方法ではなくて、もっと手っ取り早くやってしまいます。具体的には、操作したいLabelのText属性で次のようにします。 Text='<%# Eval("***").ToString().StartsWith("9") ? "非表示" : Eval("***") %>' これはC#の条件分岐式(If文相当)なのでVBだとどうなるのかよく知りませんが、作りかけのFormViewで試したところでは出来ています。 なお、これは、Labelに表示するだけですので、更新が絡む(Bindメソッドの場合)とよくわかりません。(ちょうど別スレッドで質問中です^_^;) これだと簡単な変換しかできませんが、複雑になると、コードビハインド側に変換用メソッドを作っておいて、連結式からそれを呼び出すとかの方法もありますね。 Row.Cells・・・は、FormViewではやったことがないので別の人にお願いしましょう。 |
|
投稿日時: 2006-11-14 23:29
BTさんが書いているような方法が楽でしょうね。
> 「Row.Cells(0).Controls.Add(-編集後文字列-)」とすると、 コントロールを追加(Add)しているのですからLabelが追加されて当然ですね。 元々のLabelを消して、、、なんてはじめるとあとでなにか変更しようとしたときに 大変になったりしますから、もっと楽にできる方法があるならそちらを利用した ほうがよいでしょう。 |
|
投稿日時: 2006-11-15 09:51
BTさん、どっとねっとふぁんさん、ご返答ありがとうございます。
<実験結果> 早速、BTさんのサンプルで試してみましたが、うまくいきません。 (もちろん、"***"は適切な項目名を入れています。) (エラー内容) 文字が有効ではありません。 ステートメントの終わりを指定してください。 …すなわち、当該タグのところでエラーとなっているようです。 どなたか、Evalメソッド内でのVBの条件分岐式(If文相当)をご教示頂きたく存じます。 <追加要件> 「先頭が"9"の文字列を"非表示"と編集する」"だけ"ではなく、 「先頭が"9"で、桁数が5桁の文字列を"非表示"と編集する」というのが最終的に実現したい要件です。 こちらも併せてご検討頂けると幸いです。 >BTさん 何か、参考となる書籍やHPなど教えて頂ければ幸いです。 以上、宜しくお願い致します。 |
|
投稿日時: 2006-11-15 10:27
BTさんが書いている「コードビハインド側に変換用メソッドを作っておいて、
連結式からそれを呼び出すとかの方法」の例を以下の記事の最後に載せています。 http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx 参考になるかな? |
|
投稿日時: 2006-11-15 11:02
どっとねっとふぁんさん、ご返答ありがとうございます。
教えて頂いたURLの記事の内容で解決致しました。 カスタムバインドのコード式はアヤしいとは思っていましたが、ここでメソッドを呼び出すという発想に至りませんでした。 (言われてみれば納得なのですが、初心者ゆえ…。) 本当に助かりました。ありがとうございました。 今後とも宜しくお願い致します。 |
|
投稿日時: 2006-11-15 12:06
解決されたようでなによりです。
最初の式はC#ですのでVBで書き直さないといけません。 ただ、自分で書いておきながらなんですが、ちょっと試した感じではVB.NETでは出来ないかもしれませんね(VB.NETはよく知らないので不確実ですけど)。ASPのVBSでは何重でもIF文をネストできたのですけど。←VB使いの方、訂正ありましたらよろしくお願いします。 まあ今回はともかく、簡単な操作であれば、連結式のところで変換するのが一番いいと思います。 ちなみに、コードビハインド側のメソッドのアクセス修飾子は"protected"でもOKですので自分はそうしてます。 あと試しにコードビハインドのメソッドにBind("***")を渡してみましたがやっぱりダメですね。うーむBindは根本的に何か違うのかも。 |
|
投稿日時: 2006-11-15 13:04
BTさん
アクセス修飾子の補足情報、ありがとうございます。 実は、実験しようと考えていたところでした。 やはりprotectedでもOKでしたね。 私もprotectedで実装しようと思います。 |
1