2014-06-26 56 views
0

我正在通過實體框架檢索數據。在用戶表裏面有一個角色的導航屬性。內部角色有一個屬性角色名稱。但是,它綁定到網格,並呼籲使用eval我收到以下錯誤綁定表達式時:如何綁定網格視圖內列表內部列表?

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> 
+0

可能重複http://stackoverflow.com/questions/1130351/gridview-bound-with-with-properties-of-嵌套級) – deostroll

回答

0

這是我會做的:

<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> 
後面10

代碼:

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(); 
} 
[綁定與嵌套類的屬性的GridView](的