我有一個VS2005 ASP.Net頁面上有一箇中繼器的客戶。在asp.net中的數據綁定表達式
下面以中繼器的顯示出來:
<span><%# Eval(GetAdLinks((Customer)Container.DataItem)) %></span>
的GetAdLinks是在它的後面返回表示爲字符串的控制代碼中的保護方法。這可能嗎?
我收到說客戶不包含屬性與名稱的錯誤...
任何想法?
我有一個VS2005 ASP.Net頁面上有一箇中繼器的客戶。在asp.net中的數據綁定表達式
下面以中繼器的顯示出來:
<span><%# Eval(GetAdLinks((Customer)Container.DataItem)) %></span>
的GetAdLinks是在它的後面返回表示爲字符串的控制代碼中的保護方法。這可能嗎?
我收到說客戶不包含屬性與名稱的錯誤...
任何想法?
如果是客戶端(無runat =「server」)控件,則應該可以。但是你不應該把它包含在Eval()中。我猜它應該看起來有點像這樣:
<%# GetAdLinks(Container.DataItem) %>
的GetAdLinks方法應該被重構接受的Container.DataItem作爲一個DataRowView的對象。在該方法內部,您可以將其轉換爲Customer對象,您可以通過一些調試來找出它。
祝你好運!
更好的做法是將Literal
添加到您的Repeater
模板中,然後實施OnDataBinding方法。這正是Literal
的用途。
下面是一個例子:
<asp:Literal ID="litYourControl" runat="server" OnDataBinding="litYourControl_DataBinding" />
然後在你的代碼隱藏實現它:
protected void litYourControl(object sender, System.EventArgs e)
{
Literal lt = (Literal)(sender);
// Not sure what field you are binding to based on the example in your question
// so I will just make an assumption.
Customer cus = (Customer)(Eval("Container.DataItem"));
lt.Text = GetAdLinks(cus);
}
能否請您發佈的GetAdLinks方法的簽名? – 2010-03-18 15:18:52