GridView 模板列嵌套主从表

    技术2022-05-11  83

    当需要在一个列表中显示主从表(例如部门-人员的信息),在asp.net1.1中我们可能会使用DataGrid模版列嵌套DataGrid的方法实现,然而,处理模版列里的DataGrid的翻页、排序、编辑等功能时都比较麻烦。在asp.net2.0中,配合DataSource控件的使用让这个问题变得非常简单! 

    <% @ 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 ="deptremark"  HeaderText ="备注"  SortExpression ="deptremark"   />                  < 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], [deptremark], [createdate] FROM [departments]" >          </ asp:AccessDataSource >          </ div >      </ form > </ body > </ html >  1 using  System;  2 using  System.Data;  3 using  System.Configuration;  4 using  System.Collections;  5 using  System.Web;  6 using  System.Web.Security;  7 using  System.Web.UI;  8 using  System.Web.UI.WebControls;  9 using  System.Web.UI.WebControls.WebParts; 10 using  System.Web.UI.HtmlControls; 11 12 public  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}  

    最新回复(0)