如何在网格视图内的列表内绑定列表? [英] How to bind list inside list inside grid view?

查看:71
本文介绍了如何在网格视图内的列表内绑定列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在通过实体框架检索数据.在用户表中,有一个角色的导航属性.角色内部有一个属性角色名称.但是,当将其绑定到网格并使用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(&quot;Role.RoleName&quot;)" 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆