首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么在repeater中动态绑定数据字段

2011-12-24 
如何在repeater中动态绑定数据字段repeater的数据的数据字段是不固定的动态查询所得,如有时会是3个字段,有

如何在repeater中动态绑定数据字段
repeater的数据的数据字段是不固定的动态查询所得,如有时会是3个字段,有时会是5个字段,字段及字段名称都不固定,如果系后台CS绑定数据到repeater

[解决办法]
怎么会不固定?

能说说你的用途?

展示给用户的元素也不固定?
[解决办法]
你在前台的代码中用 <%=string%> 后台写个公共的方法,动态生成字段就可以了
[解决办法]
怎么能麻烦呢?
多简单啊!我都是这样做的
[解决办法]
如此需求, 目前所有的复杂数据列表控件都不适合,

如果不需要特殊的要求,手动遍历 DataTable 输出,未尝不可
[解决办法]
checkboxlist列出所有的这段
然后枚举已选项动态构造sql 语句
select A,C,D from得到数据源
datatable dt= ...........

绑定repeater的dataitembind事件
rep.dataitembind+=new ............
rep.datasource=dt;
rep.databind();

将repeater放在一个 <table> 当然,你也可以随便定义格式,只是一个示例,放置头部和数据模板
模板中放个literal
<table> <asp:repeater runat= "server " id= "rep " showheader= "true ">
<headerTemplate>
<asp:literal id= "lit_head "...........
</headertemplate>
<itemtemplate>
<asp:Literal id= "lit_item "...............
</itemtemplate>
</asp:repeater>
</table>

在itemdatabind事件中处理
if(e.itemtype==listitemtype.header){
//列举出所有的字段当头部
StringBuilder sb=new StringBuilder( " <tr> ");
for(int i=0;i <dt.columns.length;i++){
sb.appendformart( " <td> {0} </td> ",..............)
}
sb.append( " </tr> ");
( e.item.findcontrol( "lit_head ") as literal).Text=sb.tostring();
}
else if( //行或间隔行){
也一样的处理,不过这时候不是显示字段列表而是数据了,同样的构造一个html的tr行,让literal显示就行了
}

热点排行