黑马程序员技术交流社区
标题:
Repeater数据绑定的字段转换
[打印本页]
作者:
宋兴征
时间:
2013-3-25 10:29
标题:
Repeater数据绑定的字段转换
本帖最后由 宋兴征 于 2013-3-26 12:23 编辑
在做基于角色的权限管理的功能,其中 Right 表的结构:
Id Name Url PID
1
权限管理
indexRight
0
3
权限浏览
browseRight
1
4
权限增加
addnewRight
1
5
权限修改
updateRight
1
6
权限删除
deleteRight
1
PID表示所属哪一个模块,值对应于自身表的某一个Id
问题:
使用Repeater显示Right表内容,数据源是一个DataTable,在BLL中封装的方法。
现在想将PID字段替换为具体模块名,也就是自身表的Name字段
该怎么做?
附代码如下:
<asp:ObjectDataSource ID="odsBrowserRight" runat="server" SelectMethod="GetAllRights"
TypeName="TMCR.BLL.RightBLL"></asp:ObjectDataSource>
<asp:Repeater ID="repBrowserRight" runat="server"
DataSourceID="odsBrowserRight" onitemcommand="repBrowserRight_ItemCommand">
<HeaderTemplate>
<table class="browserRight">
<tr>
<td>权限ID</td>
<td>权限名称</td>
<td>权限URL</td>
<td>权限所在模块</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("Id") %></td>
<td><%#Eval("Name") %></td>
<td><%#Eval("Url") %></td>
<td>
<asp:Label ID="Label1" runat="server" Text=''></asp:Label></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
复制代码
作者:
许庭洲
时间:
2013-3-26 08:17
1. Repeater用于对绑定数据源中的数据进行遍历显示,每条数据以什么格式显示是由Repeater的<ItemTemplate>来决定的,模板会多次显示<ItemTemplate>权限ID:<%#Eval("Id")%><b> 权限名称:<%#Eval("Name")%></b><b> 权限URL:<%#Eval("Url")%></b><br/></ItemTemplate>;
2.<%#Eval("PID"%>表示在这个位置显示当前的权限所在模块属性;
3. 因为Eval就是将属性显示到指定的位置,因此也可以显示到文本框中<ItemTemplate>权限所在模块:<input type="text" value='<%#Eval("PID")%>'/></ItemTemplate>
作者:
宋兴征
时间:
2013-3-26 12:20
本帖最后由 宋兴征 于 2013-3-26 12:22 编辑
我找到了解决办法:
因为Repeater只是显示,所以只要将PID的位置替换为其他值即可,不涉及数据绑定。
所以在OnItemDatabound事件里:
if (e.Item.ItemType == ListItemType.Item|| e.Item.ItemType==ListItemType.AlternatingItem)
{
Right right = (Right)e.Item.DataItem;
int pid = right.PID; //当前行的所属的模块ID
Right pRight = new RightBLL().GetById(pid); //通过PID找到模块
Label label = (Label)e.Item.FindControl("Label1");
label.Text = pRight.Name; //显示模块名称
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2