如何在网格视图内的列表内绑定列表? [英] How to bind list inside list inside grid view?
本文介绍了如何在网格视图内的列表内绑定列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在通过实体框架检索数据.在用户表中,有一个角色的导航属性.角色内部有一个属性角色名称.但是,当将其绑定到网格并使用Eval调用绑定表达式时,出现以下错误:
I am retrieving data through entity framework. Inside User Table there is a navigation property of role. Inside role there is a property role name. But when binding it to grid and calling the binding expression using Eval i am getting the following error:
DataBinding: Eval("Role.RoleName") is not a valid indexed expression.
我的代码是:
Entities.VSTMEntities vstmEntities = new Entities.VSTMEntities();
var lstUser = (from e in vstmEntities.Users
select e).ToList();
gvUserInformation.DataSource = lstUser;
gvUserInformation.DataBind();
和aspx:
<asp:GridView ID="gvUserInformation" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Username" HeaderText="UserName" />
<asp:BoundField DataField="Password" HeaderText="Password" />
<asp:BoundField DataField="Email" HeaderText="Email Address" />
<asp:BoundField DataField="User_Status" HeaderText="User Status" />
<asp:BoundField DataField="Eval("Role.RoleName")" HeaderText="User Role" />//This causing error
</Columns>
</asp:GridView>
推荐答案
这就是我要做的:
<asp:gridview id="gvUserInformation" runat="server" autogeneratecolumns="False">
<Columns>
<asp:BoundField DataField="Username" HeaderText="UserName" />
<asp:BoundField DataField="Password" HeaderText="Password" />
<asp:BoundField DataField="Email" HeaderText="Email Address" />
<asp:BoundField DataField="User_Status" HeaderText="User Status" />
<asp:TemplateField>
<ItemTemplate>
<asp:GridView ID="grid2" runat="server" AutoGenerateColumns="False" Width="100%">
<Columns>
<asp:BoundField DataField="RoleName" HeaderText="User Role" />
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview>
后面的代码:
protected override void OnInit(EventArgs e)
{
gvUserInformation.RowDataBound += gvUserInformation_RowDataBound;
}
void gvUserInformation_RowDataBound(object sender, GridViewRowEventArgs e)
{
var grid2 = (GridView)e.Item.FindControl("grid2");
grid2.DataSource = Role.Where(w => w.RoleName = (e.Item.DataItem as Roles).RoleName);
grid2.Bind();
}
这篇关于如何在网格视图内的列表内绑定列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文