2009-07-15 10 views
1

私はSQLデータベースにデータバインドされているRepeaterを持っています。私は次の操作を行うの情報にアクセスするには:DataBinder.Eval()からすべての式をリストすることはできますか?

string Author = (string)DataBinder.Eval(e.Item.DataItem, "Author"); 

あり(インテリセンスがそれを置くよう表現?)他のプロパティは、私がアクセスする必要があることですが、私は自分の名前が何であるかが不明です。 e.Item.DataItemをループして、すべての式の名前を取得できますか?

私はすでにthis questionとしましたが、私は不明であったと思います。そのポストの結果はデー​​タベースではなく、実際の式の名前/値からテーブル構造のように見えるものを私に与えた:値を取得する

UrlWithExtension [System.String] 
ThumbnailUrl [System.String] 
Content [System.Object] 
Language [System.String] 
// etc 

は、式の名だけは本当に重要ではありません。

ありがとうございます!

答えて

0

Fields(本質的にクラスレベルで宣言され、公開された変数)を参照していると思います。あなたは小さな変更で、私は他のQ &に糸を供給し、同じ方法を使用することができます:私はほとんどないことから、プロパティのコードを作ったとき

obj.GetType(). 
    GetFields(). 
    ToList(). 
    ForEach(p => 
     Console.WriteLine("{0} [{1}]", p.Name, p.FieldType.ToString() 
     )); 

私は本当にそれについて考えていませんでした私のクラスでフィールドを公開します。

オブジェクトのインターフェイスがどのようなものかを知る必要があるときは、デバッガにブレークポイントを追加して、オブジェクトを少し近づけるために時計を追加するのが最も簡単です。それはすべての(非メソッド)メンバーとそのタイプ(および現在のコンテンツも)を明らかにするでしょう。

+0

は、残念ながら、それはそれではありません。私はそれを実行すると、空の文字列が得られます(コンソールに出力する代わりに文字列ビルダーにテキストを追加するためにコードを少し修正しました)。 – Anders

0

あなたの他の投稿への回答は、この回答も同様です。あなたが探している「Expresions」を取得するには、あなたはあなたのDataItemの上に移動して、コンソールに各プロパティと出力の名前と値を取得します...

var props = e.Item.DataItem.GetType().GetProperties(); 

foreach (var item in props) 
{ 
    Console.WriteLine(string.Format("{0}:{1}", item.Name, DataBinder.Eval(e.Item.DataItem, item.Name))); 
} 

このループをこのような何かを行うことができます。作成者が結果のリストに表示されていない場合は、代わりにプロパティではなくパブリックフィールドである可能性があるので、GetFields()または他のメソッドのいくつかを参照する必要があります。れるGetFieldsを使用して

例...

var props = e.Item.DataItem.GetType().GetFields(); 

foreach (var item in props) 
{ 
    Console.WriteLine(string.Format("{0}:{1}", item.Name, DataBinder.Eval(e.Item.DataItem, item.Name))); 
} 
+0

これは別のものでなければなりません。 – Anders

+0

GetProperties()の代わりにGetFields()を試してみましたか? –

+0

Fredrikのコードと同じ結果、実際の値(UrlWithExtension:〜/ Libraries/Activation_Key/Activation_Key.sflb.ashx) – Anders

関連する問題