2013-02-11 59 views
0
訪問行

我有以下的ASPX代碼:在GridView控件

protected string GetBranchAddress(DataRow row) 
{ 
    return "<span style=\"text-decoration:underline;\">"+ 
       row["BRANCH_NAME"].ToString().Trim() + "</span><br />" + 
       row["OWNERS_FIRST_NAME"].ToString().Trim() + " " + 
       row["OWNERS_LAST_NAME"].ToString().Trim() + "<br />" + 
       row["OWNERS_EMAIL"].ToString().Trim() + "<br />" + 
       row["OWNERS_OFFICE_PHONE"].ToString().Trim() + "<br />" + 
       row["OWNERS_FAX_PHONE"].ToString().Trim(); 

} 

我得到的錯誤是:

沒有重載

<ItemTemplate> 
    <asp:HyperLink ID="BRANCH_NAME" runat="server" 
      NavigateUrl='<%# "mailto:"+Eval("OWNERS_EMAIL") %>' 
      Text='<%# Eval("BRANCH_NAME") %>' 
      ToolTip='<%# GetBranchAddress() %> '> 
    </asp:HyperLink> 
</ItemTemplate> 

在後面的代碼功能方法'GetBranchAddress'需要'0'參數

如何在我的ASP GridView中訪問row以便我可以將它傳遞給我的函數?

謝謝。

回答

2

,而不是試圖整個DataRow傳遞到功能,利用datakeys來指定要顯示的字段,並通過在該行的索引。

<asp:GridView ID="GridView1" runat="server" DataKeyNames="BRANCH_NAME, StreetAddress" ...> 

ItemTemplate的代碼會是這個樣子:

<ItemTemplate> 
    <asp:HyperLink ID="BRANCH_NAME" runat="server" 
      NavigateUrl='<%# "mailto:"+Eval("OWNERS_EMAIL") %>' 
      Text='<%# Eval("BRANCH_NAME") %>' 
      ToolTip='<%# GetBranchAddress(Container.DisplayIndex) %> '> 
    </asp:HyperLink> 
</ItemTemplate> 

在你的功能,你可以訪問datakey值是這樣的:

protected string GetBranchAddress(int rowIndex) 
{ 
    return GridView1.DataKeys[rowIndex]["BRANCH_NAME"].ToString(); 
} 
+0

這是一個好主意,但如果我指定了列名,我可以直接將它們傳遞給我的函數,如'GetBranchAddress(Eval(「BRANCH_NAME」),Eval(「BRANCH_EMAIL」))'。 – user1477388 2013-02-11 17:59:18

+0

無論如何,您必須在某處指定列名稱,如果在標記與代碼隱藏中指定它們,則維護會更容易。你有這樣一個特定的原因嗎? – 2013-02-11 18:22:50

+0

我只想通過在視圖之外儘可能多地保留業務邏輯來使事情更「MVC」。 – user1477388 2013-02-11 18:41:09

0

在您的標記中,您沒有將任何參數傳遞給GetBranchAddress,這就是您遇到錯誤的原因。您應該將「this」傳遞給方法,其中「this」是當前對象(DataRow)上的操作。例如,

ToolTip='<%# GetBranchAddress(this) %> ' 
+0

我試過路過'this'但它給了我另一個錯誤''SplendidCRM.WebForms.client_home2.GetBranchAddress(System.Data.DataRow)'的最佳重載方法匹配'有一些無效參數' – user1477388 2013-02-11 17:48:56