2011-07-25 79 views
0

我有一個GridView綁定到linqdatasource。 gridview有一個FK。我想顯示一個名稱/文本字段而不是此列的關鍵字段。在字段內訪問Gridview行數據

我在ASP.NET頁面中創建了一個方法,基本上GetLookupForKey在提供密鑰時返回字符串。但是,我不知道如何發送數據聲明中特定行的列數據。

這應該說清楚:

 <asp:TemplateField> 
     <ItemTemplate> 

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

GetRoleName(*我需要在角色ID這裏給*)%>」 />

角色ID既一個綁定域和一個DataKeyName。我如何將RoleId發送給我的方法?另外,如何在不使用任何代碼隱藏的情況下實現這一目標?

謝謝

回答

1

我現在可以看到兩種方式,也許還有更多。

1)隨着後面

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

這一個代碼將需要在頁面的隱藏類代碼保護的方法GetRoleName(object roleId)

2)如果沒有後面的代碼

我認爲對象Role和任何對象引用它在LINQ的背景下這兩個聲明。如果是這樣,Linq可以(甚至默認行爲)爲被引用的對象生成屬性。也就是說,當您將FK的表格設置爲Role時,對應的對象將具有RoleIDRole屬性。因此,所有事情都可以通過聲明來實現:

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

我從來沒有得到像Role.Name一樣的Linq上下文在GridView中工作。查詢結果必須使用哪種類型的枚舉才能工作? – TheGeekYouNeed

+0

@Andrei完美!我驗證了兩種方法的工作。但是,我正在使用綁定字段的自定義控件,因爲我需要訪問聲明語法的父對象。另一種聲明性方法是使用數據綁定下拉列表並將其綁定到數據源。 –