asp.net中的数据绑定表达式

时间:2010-03-18 15:10:33

标签: asp.net data-binding repeater

我有一个VS2005 ASP.Net页面,其上有一个客户转发器。

以下内容显示在转发器中:

<span><%# Eval(GetAdLinks((Customer)Container.DataItem)) %></span>

GetAdLinks是一个受保护的方法,后面的代码返回一个表示为字符串的控件。这可能吗?

我收到一条错误消息,指出客户不包含名称为...的属性

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

更好的方法是在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);
}

答案 1 :(得分:0)

如果它是客户端(没有runat =“server”)控件,那么它应该是可能的。但是你不应该把它包含在Eval()中。我猜它应该看起来像这样:

<%# GetAdLinks(Container.DataItem) %>

应重构GetAdLinks方法以将Container.DataItem接受为DataRowView对象。在方法内部,您可以将其强制转换为Customer对象,您可以通过一些调试来解决它。

祝你好运!