在datarepeater控件中实现此操作的正确方法是什么?
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<strong><%= Eval("FullName") %></strong><br />
<p>
<%= Eval("Summary") %>
</p>
</ItemTemplate>
</asp:Repeater>获取诸如Eval()、XPath()和Bind()等错误数据库的方法只能在数据库控件的上下文中使用。
我想把FullName和摘要写出来。但我不想在子控件上筑巢。Repsonse.Write是最好的方法吗?
UPDATE:不确定这是否必要,但我能够解决的唯一方法是使用控件
发布于 2009-11-11 20:26:13
中继器需要一个数据源,分配如下:
public class Foo
{
public string FullName { get;set; }
public string Summary {get;set; }
public Foo(fullName,summary)
{
FullName=fullName;
Summary=summary;
}
}
/// elsewhere...
List<Foo> myFoos = new List<Foo>();
myFoos.Add(new Foo("Alice","Some chick"));
myFoos.Add(new Foo("Bob","Some guy"));
myFoos.Add(new Foo("Charlie","Indeterminate"));
Repeater1.DataSource = myFoos;
Repeater1.DataBind();如本例所示,您的数据源可以是实现IEnumerable的任何东西--列表是我的最爱,但是C#中的大多数集合都属于这个类别。您的数据源不必来自数据库或任何特定的地方。
您不必使用response.write或子控件。(无论如何,服务器控件在中继器内部无效)。你可以试着替换
<%=Eval("...使用
<%#Eval("...我不确定两者之间的区别,但大多数例子中都使用了第二种形式。
发布于 2009-11-11 20:28:17
您可以随时尝试以下方法:
<%# DataBinder.Eval(Container.DataItem, "FullName") %>https://stackoverflow.com/questions/1717795
复制相似问题