首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

GridView绑定的对象列表中的一个属性是一个对象列表怎么办

2012-04-10 
GridView绑定的对象列表中的一个属性是一个对象列表怎么处理类结构如下:public static class OfficeAccess

GridView绑定的对象列表中的一个属性是一个对象列表怎么处理
类结构如下:
public static class OfficeAccess{
  public static List<office> GetListOffice() { 
   
  }
}

public class office {
  public string name { get; set; }
  public string address { get; set; }
  public List<worker> listworker { get; set; }
}

public class worker {
  public string name { get; set; }
  public string sex { get; set; }
  public string age { get; set; }
}

在aspx页面中是这样构成的:
<asp:ObjectDataSource id="srcOffice" TypeName="OfficeAccess" SelectMethod="GetListOffice" runat="server" />
用gridView来显示数据。office类的name,address都好处理,我想知道的是listworker这个属性怎么办呀?

[解决办法]
下面是一个例子
直接宝贝粘贴运行

HTML code
<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">  public class office  {    public string name { get; set; }    public string address { get; set; }    public List<worker> listworker { get; set; }  }  public class worker  {    public string name { get; set; }    public string sex { get; set; }    public string age { get; set; }  }  public List<office> GetListOffice()  {    List<office> ls = new List<office>();    office o = null;    worker w = null;    Random r = new Random();    for (int i = 0; i < 10; i++)    {      List<worker> lw = new List<worker>();      for (int j = 1; j < r.Next(4,10); j++)      {        lw.Add(new worker() { name = "worker" + i.ToString() + "_" + j.ToString(), sex = "A", age = (j * j * i).ToString() });      }      o = new office() { name = "officename" + i.ToString(), address = "Ad" + i.ToString(), listworker = lw };      ls.Add(o);    }    return ls;  }  protected void Page_Load(object sender, EventArgs e)  {    GridView1.DataSource = this.GetListOffice();    GridView1.DataBind();  }  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)  {    if (e.Row.RowType == DataControlRowType.DataRow)    {      List<worker> lw = DataBinder.Eval(e.Row.DataItem, "listworker") as List<worker>;      GridView gv2 = e.Row.FindControl("GridView2") as GridView;      gv2.DataSource = lw;      gv2.DataBind();    }  }</script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">  <title></title></head><body>  <form id="form1" runat="server">  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound">    <Columns>      <asp:TemplateField>        <ItemTemplate>          <div style="background-color:Orange;font-weight:bold;font-size:24px">姓名:<%#Eval("name")%> 地址:<%#Eval("address")%> Worker列表如下</div>          <asp:GridView ID="GridView2" runat="server" Width="100%">          </asp:GridView>        </ItemTemplate>      </asp:TemplateField>    </Columns>  </asp:GridView>  </form></body></html>
[解决办法]
上面的数据只是示例数据,你可以换成你的
显示样式根据你的需要自己修改即可

ObjectDataSource 的例子

HTML code
<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)  {    if (e.Row.RowType == DataControlRowType.DataRow)    {      List<worker> lw = DataBinder.Eval(e.Row.DataItem, "listworker") as List<worker>;      GridView gv2 = e.Row.FindControl("GridView2") as GridView;      gv2.DataSource = lw;      gv2.DataBind();    }  }</script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">  <title></title></head><body>  <form id="form1" runat="server">  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataSourceID="ObjectDataSource1" OnRowDataBound="GridView1_RowDataBound">    <Columns>      <asp:TemplateField>        <ItemTemplate>          <div style="background-color:Orange;font-weight:bold;font-size:24px">姓名:<%#Eval("name")%>地址:<%#Eval("address")%>Worker列表如下</div>          <asp:GridView ID="GridView2" runat="server" Width="100%">          </asp:GridView>        </ItemTemplate>      </asp:TemplateField>    </Columns>  </asp:GridView>  <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetListOffice" TypeName="OfficeAccess">  </asp:ObjectDataSource>  </form></body></html> 

热点排行