gridview1 里嵌套gridview2<gridview1 ..........datasource=objectsouce1    <temp....
          gridview2...........datasource=objectsouce2
    </temp....
        
gridview2绑定的数据源里没有属性 AAA
而gridview2所在的gridview1的数据源里有AAA要问的问题是gridview2里怎么取gridview1数据源的属性AAA

解决方案 »

  1.   


    http://eddie005.cnblogs.com/archive/2006/07/04/442845.aspx
      

  2.   

    如果上面的简单例子未能满足要求,那么也可以:
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex > -1)
            {
                //取得当前绑定行的数据
                DataRowView rv = (DataRowView)e.Row.DataItem;
                  string aaa = rv["AAA"].ToString();                     GridView gw2 = (GridView)e.Row.FindControl("GridView2");            /*在这里,可以通过编码方式声明datasource2的参数
                参见:http://eddie005.cnblogs.com/archive/2006/06/27/SetParameters.html*/
            }
        }
      

  3.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView_GirdView.aspx.cs" Inherits="GridSamples_GridView_GirdView" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="deptid"
                DataSourceID="AccessDataSource1" AllowPaging="True" AllowSorting="True" PageSize="2" OnRowDataBound="GridView1_RowDataBound">
                <Columns>
                    <asp:BoundField DataField="deptid" HeaderText="部门编号" InsertVisible="False" ReadOnly="True"
                        SortExpression="deptid" />
                    <asp:BoundField DataField="deptname" HeaderText="部门名称" SortExpression="deptname" />
                    <asp:BoundField DataField="deptre" HeaderText="备注" SortExpression="deptre" />
                    <asp:TemplateField HeaderText="人员信息">
                        <ItemTemplate>
                            <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
                                DataSourceID="AccessDataSource2" AllowPaging="True" AllowSorting="True" PageSize="5">
                                <Columns>
                                    <asp:BoundField DataField="id" HeaderText="人员编号" InsertVisible="False" ReadOnly="True"
                                        SortExpression="id" />
                                    <asp:BoundField DataField="name" HeaderText="姓名" SortExpression="name" />
                                    <asp:BoundField DataField="sex" HeaderText="性别" SortExpression="sex" />
                                </Columns>
                                <PagerSettings FirstPageText="首页" LastPageText="末页" Mode="NextPreviousFirstLast"
                    NextPageText="下一页" PreviousPageText="上一页" />
                            </asp:GridView>
                            <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/test.mdb"
                                SelectCommand="SELECT [id], [name], [sex], [deptid] FROM [employees] WHERE ([deptid] = ?)">
                                <SelectParameters>
                                    <asp:Parameter Name="deptid" Type="Int32" />
                                </SelectParameters>
                            </asp:AccessDataSource><br>
                        </ItemTemplate>
                    </asp:TemplateField>
                    
                </Columns>
                <PagerSettings FirstPageText="首页" LastPageText="末页"
                    NextPageText="下一页" PreviousPageText="上一页" />
            </asp:GridView>
            <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/test.mdb"
                SelectCommand="SELECT [deptid], [deptname], [deptre], [createdate] FROM [departments]">
            </asp:AccessDataSource>
        
        </div>
        </form>
    </body>
    </html>
     1using System;
     2using System.Data;
     3using System.Configuration;
     4using System.Collections;
     5using System.Web;
     6using System.Web.Security;
     7using System.Web.UI;
     8using System.Web.UI.WebControls;
     9using System.Web.UI.WebControls.WebParts;
    10using System.Web.UI.HtmlControls;
    11
    12public partial class GridSamples_GridView_GirdView : System.Web.UI.Page
    13{
    14    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    15    {
    16        if (e.Row.RowIndex > -1)
    17        {
    18            AccessDataSource accessDS = e.Row.FindControl("AccessDataSource2") as AccessDataSource;
    19            accessDS.SelectParameters["deptid"].DefaultValue = e.Row.Cells[0].Text;
    20        }
    21    }
    22}这样的话是不是要查询多次数据库?
      

  4.   

    是的,这将多次查询数据库如果你希望一次查询就把所有人员都取出,那么也可以取出数据后在DataTable里进行筛选,
    但这也不见得一定效率高,应该lz的两个GridView都可能会分页显示,例如GridView1第一页只显示5个部门,每个部门里GridView2也只显示第一页的5人,显然没有必要把所有数据都查询出来(所有人员可能是几千或几万)当然,具体情况还是要通过性能测试去检验一下
      

  5.   

    如果上面的简单例子未能满足要求,那么也可以:
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex > -1)
            {
                //取得当前绑定行的数据
                DataRowView rv = (DataRowView)e.Row.DataItem;
                  string aaa = rv["AAA"].ToString();                     GridView gw2 = (GridView)e.Row.FindControl("GridView2");            /*在这里,可以通过编码方式声明datasource2的参数
                参见:http://eddie005.cnblogs.com/archive/2006/06/27/SetParameters.html*/
            }
        }
    更适合我,不过烦了点,这里是gridview1访问gridview2能不能通过gridview2来访问gridview1?