参考自:asp.net(C#)中Repeater嵌套绑定Repeater
首先外部大框架是一个repeaterA,repeaterA中的每一项又包含一个小的repeaterB,每个repeater中又绑有各自的字段,这些字段来自不同的表,但他们的关键项在同一张表中。
实现思路:
1.实现数据绑定,repeaterA绑定中间表,左连接区域表,将区域表中的字段显示到ItemTemplate的区域名处,repeaterB的关联在repeaterA的rptFollow_ItemDataBound数据绑定方法中进行,获取类型字符串,通过数据库中写的方法将该字符串以“,”为分隔符进行分割(该方法返回一张表),通过表中的id获取类型表中的类型名称,放入一个新建的表中,然后再绑定给repeaterB的数据源;
2.实现取消关注,在repeaterA的rptFollow_ItemCommand方法中进行操作,首先在前端给取消按钮设置CommandName="cancel" CommandArgument='<%#Bind("id") %>',行操作名称为cancel,行操作参数绑定中间表的id,通过CommandArgument可以在该方法中获得关注数据的id,再获得用户id,便可实现删除该条数据,即取消关注的目的。
注:还有一种更简单的方法,不需要创建新表,直接用分隔符切割后的数据表与类型表进行内连接 inner join,便可直接获得repeaterB的数据源,代码再文末。
中间表:userId为用户的id,AreaId为区域的id,ProductTypesIds为关注的类型的id集合
区域表:表中是所有的区域,区域Id,区域Name,父级id
产品类型表:产品类型id,产品类型名称PclassName
前端代码:
后台代码:
1.数据绑定
2.取消关注
备注:
不创建新表,直接 inner join,其他代码都一样,只是红框中的一句代码就可以搞定之前的建立新表,插入数据的骚操作。
数据库中的dbo.Fun_Sys_Common_SplitStr方法:
手机端效果图:
效果图如下:点击取消时可以将该条数据删除,按钮放在repeaterA中;