2011-07-25 23 views
0

linqdatasourceにバインドされたGridviewを持っています。グリッドビューにはFKがあります。私はこの列のキーフィールドの代わりに名前/テキストフィールドを表示したい。フィールド内のグリッドビューの行データへのアクセス

ASP.NETページでは、キーが提供されたときに文字列を返すGetLookupForKeyメソッドを作成しました。しかし、私はどのようにデータ宣言の特定の行の列データを送信するのか分からない。

このことを明確にする必要があります。

 <asp:TemplateField> 
     <ItemTemplate> 

     <asp:Literal ID="RoleName" runat="server" Text='<%# 

GetRoleName(*私はここでRoleIdに送信する必要がある*)%>」/>

RoleIdが両方ありますバインドフィールドとDataKeyName。 RoleIdを自分のメソッドにどのように送ることができますか?また、どのようにコードビハインドを使用せずにこれを達成することができますか?

ありがとうございました

答えて

1

私は今、2つの方法を見ることができます、多分もっとあります。

<asp:Literal ID="RoleName" runat="server" Text='<%# GetRoleName(Eval("RoleId")) %>'/> 

この1の背後にあるコードで

1)は、クラスの後ろのページのコードで保護された方法GetRoleName(object roleId)が必要になります。

の背後にあるコードなし

2)私はRoleオブジェクト、それが両方のLINQのコンテキスト内で宣言されているものは何でもオブジェクトを参照していると仮定します。もしそうなら、Linqは参照されたオブジェクトのプロパティを生成することができます(デフォルトでは動作します)。つまり、FKのテーブルがRoleにある場合、対応するオブジェクトはRoleIDRoleの両方のプロパティを持ちます。したがって、すべてが宣言達成することができます。

<asp:Literal ID="RoleName" runat="server" Text='<%# Eval("Role.Name") %>'/> 
+0

を私はGridViewコントロールで動作するようにRole.NameのようなLINQのコンテキストを得たことがありません。そのためには、どのようなタイプの列挙型がクエリ結果に必要ですか? – TheGeekYouNeed

+0

@Andreiパーフェクト!私は両方の方法の作業を確認しました。しかし、宣言的な構文のために親オブジェクトにアクセスする必要があるため、私は境界フィールドのカスタムコントロールを使用しています。もう1つの宣言的な方法は、データバインドのドロップダウンを使用して、それをデータソースにバインドすることです。 –

関連する問題