- - PR -
Container.DataItemの判定をしてDataGridに表示したい
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-06-25 11:03
ぴで様より引用------------------------------------------------------------
stringで取りたいなら <%# changes(DataBinder.Eval(Container.DataItem,"YOSNOB").ToString())%> ですね! -------------------------------------------------------------------------- なるほど!理解です。 この時のDispCount関数(↑の引用でいうchanges関数)をそのaspxファイルの コードビハインドファイルに書いていますが、この関数を一箇所に書いて複数の aspxファイルの共通関数として呼び出したいと思います。 コードビハイントファイル以外に関数をおいて、やってみたのが、 (1)ディレクティブのInheritsを増やす→複数のInheritsを宣言できないとエラー (2)staticにして呼び出す(クラス名.DispCountと記述して呼び出す) →全然関数は見えないようです。 と、試した所で早くもお手上げになってしまいました。 重ね重ねなのですが、アドバイスを頂けますでしょうか? |
|
投稿日時: 2003-06-25 13:12
試していないので、自信有りませんが、
ImportディレクティブでNameSpaceを登録すると、他のクラスも見えると思います。 こんな感じです。 <%@ Import Namespace="TE03.Register.Business" %> DispCountメソッドを実装した、WebFormクラスの派生クラスをつくり、 DispCountメソッドを利用したいASPXは、作ったクラスから派生する方法もあるかな、と思います。 |
|
投稿日時: 2003-06-25 14:24
Importディレクティブを使用して、ばっちりできました!ありがとうございます。
2番目の継承の話ですが、コードビハインドファイルは、System.Web.UI.Page を継承して作られているので、無理なのではないでしょうか?それとも aspxファイル自体に継承する機能が付いているのでしょうか? もし、理解が間違っていたらご指摘お願いします。 |
|
投稿日時: 2003-06-26 00:45
申し訳ない。私の説明が悪かったです。
System.Web.UI.Pageと、コードビハインドファイルに記述されているクラスの間に 適当なクラスを挟む形で派生関係にすると良いと思います。 コードビハインドファイル内のクラス自体が、System.Web.UI.PageとASPXファイルの間に挟んであるクラスですし。 だから、Protectedのメソッドが呼び出せたり、WebコントロールがProtectedで宣言する必要があるんですよね?たぶん。。。。 [ メッセージ編集済み 編集者: GUNNM 編集日時 2003-06-26 00:48 ] |
|
投稿日時: 2003-06-26 01:09
こんばんわ。
以前、私が書込みしたスレッド「DataGridにて行数表示方法」は参考にできないでしょうか?(ソースを掲載しているスレッドです) 目的は異なりますが、使ってる技術は同じなので、応用で何とか解決できるかと思います。 当スレッドでは、コードビハインドにロジックを記述することで解決していますが、この場合だと、三項演算子をうまく利用すれば、aspx側だけでも解決できるかもしれませんね。 但し、aspxにロジカルな部分を実装すると、以下のデメリットがあります。 @デバッグ実行時に、中身の値の確認が難しい。 A実行時バインディングなので、文法の誤りも実行でないと検知できない |
|
投稿日時: 2003-06-26 10:14
GUNNM様:
「System.Web.UI.Page」を継承したクラスを作り、コードビハインドファイルは、 そのクラスを継承する形にするという事ですよね?通常、コードビハインドファイル のクラスが public class WebForm1 : System.Web.UI.Page となっている部分を public class WebForm2 : ClassHoge に変更すると、以下のエラーがでます。(ClassHogeは、System.Web.UI.Pageのサブクラス) --エラー---------------------------------------------------------------------------- Webフォームデザイナにファイルを読み込めませんでした。以下のエラーを修正して から再度読み込んでください。ファイル内にデザインできるクラスがないため、こ のファイルのデザイナを表示できませんでした。ファイルの以下のクラスがデザイ ナで見つかりました。 WebForm1---基本クラス”WebApplicarion1.ClassHoge”を読み込めませんでしたアセ ンブリが参照されているか、またはプロジェクトの一部である場合はビルドされて いる事を確認してください。 ------------------------------------------------------------------------------------ ・・・・まだ理解が間違っているようですね。レスを見たときにはな〜るほど!と思ったのですが。 ZEBRA様: >@デバッグ実行時に、中身の値の確認が難しい。 >A実行時バインディングなので、文法の誤りも実行でないと検知できない できれば、aspxファイルには画面の情報だけを載せて、ロジカルな部分については コードビハインドの方に乗せたいと思っています。@は大きいですし。 |
|
投稿日時: 2003-06-26 19:42
おそらくエラーの原因は、ClassHogeがabstract で宣言されている
とかではないでしょうか? その場合、VS.NETの制限(たぶん)でうまくデザイナで表示できません。 System.Web.UI.Pageからの継承を VS.NETと折り合いをつけながら、 どう使っていくかというのはとても興味深い題材ですね。 しかしながら、そもそも継承は共通関数を呼ぶためだけに 使うべきものではないかな、とも思います。 |
|
投稿日時: 2003-06-26 23:29
キョウさんへ
>ZEBRA様: >>@デバッグ実行時に、中身の値の確認が難しい。 >>A実行時バインディングなので、文法の誤りも実行でないと検知できない >できれば、aspxファイルには画面の情報だけを載せて、ロジカルな部分については >コードビハインドの方に乗せたいと思っています。@は大きいですし。 ええ、ですから私が以前書込みしたスレッドは、上記@Aを満たしていますよ。 これを参考にすれば、キョウさんの期待通りの実装を実現できると思います。 一度、試されるすぐお分かりになると思います。 |