我有一个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