Multi Level DataGrid

Emil Indradjaja MCP, 27 mai 2005 http://www.i-sources.net/?view=blog&blog_id=355647310
Under mine erfaringer bygge NET med Datagrid, noen ganger jeg trenger for å lage en multi- nivå Datagrid for enkel visning og tilgang.
For å oppnå det jeg ville gjøre følgende trinn:..


    Bygg en forelder Data Grid
    Følgende kode viser en enkel Datagrid som viser Region fra Nortwind Database
    privat void Page_Load (objekt avsenderen, System.EventArgs e) {if (Page.IsPostBack!) {this.FillDataStore (); this.DrawParentGrid (); }} Private void FillDataStore () {MyDataSet = nytt datasett (); string sql = " select * from Region rekkefølge etter regionDescription "; SqlDataAdapter da = ny SqlDataAdapter (sql, this.sqlConnection1); da.Fill (MyDataSet, " REGION "); sql = " select * from Medarbeidere "; SqlDataAdapter DA1 = ny SqlDataAdapter (sql, this.sqlConnection1); da.Fill (MyDataSet, " ANSATTE ");}
    private void DrawParentGrid () {Dataview dv = new Dataview (MyDataSet.Tables [0]); this.dgRegion.DataSource = dv; this.dgRegion.DataBind ();}
    kode bare fylle MyDataSet med innhold fra regionen og ansatte bord og fylle DataSet inn dgRegion løpet av første kjøretiden på siden. Koden ovenfor produserer følgende resultat:
    For å få til denne artikkelen, har vi tenkt å legge Datagrid for den ansatte (såkalt dgEmp) inne elementet malen for dgRegion som vist nedenfor:
    < asp: Datagrid id = " dgRegion " runat = " server " BorderColor = " sølv " Font-size = " XX-Small " AutoGenerateColumns = " Falsk " Font-navn = " Verdana " Cellpadding = " 2 " Rutenett = " Horisontal " HorizontalAlign = " Center " Backcolor = " White " Bredde = " 100% " >
    < AlternatingItemStyle Backcolor = " # FFFF80 " > < /AlternatingItemStyle > < HeaderStyle Font-Fet = " ekte " Backcolor = " Whitesmoke " > < /HeaderStyle > < Kolonner > ≪ asp: TemplateColumn HeaderText = " Region ID " > ≪ HeaderStyle Bredde = " 100px " > < /HeaderStyle > ≪ ItemTemplate > ≪ asp: Etikett id = inpRegionId runat = " server " Text = "<% # DataBinder.Eval (Container " DataItem.RegionId ")% > ' Synlig = " ekte " > < /asp: Label > ≪ /ItemTemplate > ≪ ItemStyle VerticalAlign = Top > < /ItemStyle > ≪ /asp: TemplateColumn > ... ... ≪ asp: TemplateColumn HeaderText = " Andre " > ≪ HeaderStyle Bredde = " 130px " > < /HeaderStyle > ≪ ItemTemplate > ≪ asp: Datagrid id = " dgEmp " runat = " server " BorderColor = " sølv " Font-size = " XX-Small " AutoGenerateColumns = " Falsk " Font-Names = " Verdana " Cellpadding = " 2 " Rutenett = " Horisontal " HorizontalAlign = " Center " Backcolor = # ffffcc Width = " 100% " Synlig = False > ≪ AlternatingItemStyle Backcolor = # ffffcc > < /AlternatingItemStyle > ≪ HeaderStyle Font-Fet = " ekte " Backcolor = " Whitesmoke " > < /HeaderStyle > < Columns > ≪ asp: TemplateColumn HeaderText = " Employee Statistisk " > ≪ HeaderTemplate > ≪ table width = 100% > < tr > ≪ td width = 150 align = center > Employee Name < /td > ≪ td width = 100 align = center > Total Sales < /td > ≪ /tr > < /table > ≪ /HeaderTemplate > ≪ ItemTemplate > ≪ table width = 100% > < tr > ≪ td width = 150 > ≪ asp: Etikett id = " Label1 " runat = " server " Text = "<% # DataBinder.Eval (Container " DataItem.FirstName ") + " &Quot; + DataBinder.Eval (Container " DataItem.LastName ")% > ' Synlig = " ekte " > < /asp: Label > ≪ /td > ≪ td width = 100 align = høyre > < asp: Etikett Synlig = False id = " lblEmployeeId " runat = " server " Text = "<% # DataBinder.Eval (Container " DataItem.EmployeeID ")% > '> < /asp: Label > ≪ asp: Etikett id = " lblTotalCust " runat = " server " Synlig = True > < /asp: Label > ≪ /td > ≪ /tr > < /table > ≪ /ItemTemplate > ≪ /asp: TemplateColumn > < /Columns > ≪ /asp: Datagrid > ≪ /ItemTemplate > < /asp: TemplateColumn > ... < asp: TemplateColumn > < HeaderStyle Bredde = " 100px " > < /HeaderStyle > < ItemStyle VerticalAlign = Top > < /ItemStyle > < ItemTemplate > ≪ asp: LinkButton id = " Linkbutton1 " runat = " server " Text = " Vis Medarbeidere " CausesValidation = " falsk " Kommando = " Velg " > Vis Employees</asp:LinkButton></ItemTemplate></asp:TemplateColumn></Columns></asp:datagrid>
  1. Wire foreldre og barn hendelsen.
    Å gjøre det arbeidet, vi må gjøre noen endringer i koden bak på siden.
    Først må vi ledningen til hendelsen for den overordnede Datagrid som vist nedenfor .:
    Vi vil koble den overordnede Datagrid for ItemCreated hendelsen og ItemDataBound hendelsen
    Inne i ItemCreated tilfelle av den overordnede Datagrid, finner vi dgEmp og legge til en ItemDataBound hendelse til den. Og inne i ItemDataBound tilfelle av den overordnede Datagrid, finner vi den dgEmp og binde det til Dataview som svarer til hver ansatt. .
  2. Legg hendelse i barnets Datagrid
    siste tingen å gjøre er å legge et arrangement til barnet Datagrid som vist på koden under:
    Som du ser, funksjonen ovenfor bare få ansatt id og beregne det totale salget fra ORDER bordet inne i Northwind database. Resultatet av koden er vist nedenfor:

    Glad Programmering