在把Repeater 弄成用户控件时候,由于我用属性来接收得到的各种数据源(DataTable格式),所获得的列 也是不一样的,因此前台要拼脚本,如下:
我用EVAL绑值的时候arr[k]这里会报错说k找不到,试了好几种方式都不行,不知道如何动态绑定它,大虾们有知道的救命啊!GetColName();方法是后台方法,返回当前数据源每列列名的链表集合
<ItemTemplate>
<tr>
<%ArrayList arr = GetColName(); %>
<%for(int k = 0;k<arr.Count;k++)%>
<%{ %>
<td><%#DataBinder.Eval(((RepeaterItem)Container).DataItem,arr[k])></td>
<%}%>
</tr>
</ItemTemplate>
“<%#DataBinder.Eval(((RepeaterItem)Container).DataItem,arr[k])”
是不是少了"%>"?。
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<tr>
<%
ArrayList al = GetList();
for (int i = 0; i < al.Count; i++)
{
Response.Write("<td>"+al[i].ToString()+"</td>");
}
%>
</tr>
</HeaderTemplate>
</asp:Repeater>
结果如下:
列1 | 列2 | 列3 | 列4 | 列5 | 列6 | 列7 | 列8 | 列9 | 列10 |
应该是因为k是临时变量,所以会找不到了吧- -..不知道是不是这个原因.
<table>
<tr>
<td>字段名</td>
</tr>
<repeater>
<ItemTemplate>
<tr>
<td><%#Eval(字段)%></td>
</tr>
</ItemTemplate>
</repeater>
后台page_load中直接绑定
repeater.DataSource =datable;
repeater.DataBind();
复杂问题简单化,技术的实质是服务!~