首页 新闻 会员 周边

高手来,用户控件中动态绑定repeater问题!

0
悬赏园豆:30 [已关闭问题] 关闭于 2009-11-16 10:01

在把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>

问题补充: 本来想用<%.... , <%=arr[k]%>%> 这样来弄,但是<%%>不会像引号那样自动匹配的
死神的背影的主页 死神的背影 | 小虾三级 | 园豆:667
提问于:2009-11-10 17:15
< >
分享
所有回答(5)
0
Mr雨 | 园豆:1199 (小虾三级) | 2009-11-10 17:54
0

“<%#DataBinder.Eval(((RepeaterItem)Container).DataItem,arr[k])”

是不是少了"%>"?。

莫慌 | 园豆:9 (初学一级) | 2009-11-10 19:37
是有的%>这个东西,可能是发帖的时候忘记加了吧
支持(0) 反对(0) 死神的背影 | 园豆:667 (小虾三级) | 2009-11-10 23:31
0

        <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是临时变量,所以会找不到了吧- -..不知道是不是这个原因.

Pwd | 园豆:158 (初学一级) | 2009-11-10 20:23
这个我有试过,如果做表头的话,没问题的,可是要用Eval 去绑列数据源的时候要怎么弄呢?
支持(0) 反对(0) 死神的背影 | 园豆:667 (小虾三级) | 2009-11-10 23:32
0
<table>
<tr>
<td>字段名</td>
</tr>
<repeater>
<ItemTemplate>
<tr>
<td><%#Eval(字段)%></td>
</tr>
</ItemTemplate>
</repeater>

后台page_load中直接绑定

repeater.DataSource =datable;
repeater.DataBind();

这样不就行了吗。
邢少 | 园豆:10926 (专家六级) | 2009-11-11 11:22
不行啊,我的后台的数据源datable是动态给的,要求只要是DATATABLE格式的数据源都能绑,所以要拼列的啊,字段是不确定的
支持(0) 反对(0) 死神的背影 | 园豆:667 (小虾三级) | 2009-11-11 12:37
0

复杂问题简单化,技术的实质是服务!~

Peter Yao | 园豆:225 (菜鸟二级) | 2009-11-11 18:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册