Skapa hierarkiskt vyblad

Skapa relationer för datatabeller

Till exempel använder du ADO.Net API och extraherar data från databastabellerna. För att skapa hierarkiskt vyblad måste du designa en datauppsättning

objekt baserat på vissa tabeller och skapa en relation mellan dem först. Använd VS.NETDataset Designer att skapa relationen. I

I det här exemplet finns det tre datatabeller: kunder, beställningar, beställningsdetaljer. Arket visar all kundinformation som standard. När

användaren utökar en kund, rutnätet visar alla beställningar som kunden har lagt. När användaren utökar en beställning visar rutnätet detaljerna

av den ordningen. Uppgifterna är hierarkiska: beställningsdetaljer listas under beställningar och beställningar under kunder.

För att detta ska fungera måste följande till relationer upprättas mellan datatabellerna:

  1. Skapa en främmande nyckel på DataTable Orders, nyckelfältet är CustomerID

todo:image_alt_text

  1. Skapa en främmande nyckel på DataTable Order Details, nyckelfältet är OrderID.

todo:image_alt_text

DataSet Designer ser nu ut så här:

todo:image_alt_text

Bind arbetsblad

Använd nuArbetsbladsdesigner för att ställa in DataSource och DataMember för kalkylbladet och konfigurera datafältets bindningskolumner.

Kontrollen lägger automatiskt till en +-ikon för varje rad som motsvarar en post vars bindningsobjekt (vanligtvis ett DataRowView-objekt) har

barns synpunkter. När du klickar på +-ikonen expanderas posten för att visa barnvyn. I exemplet nedan användsArbetsbladsdesigner att binda

kalkylblad till rotöverordnade DataTable-kunder.

todo:image_alt_text

Anpassa underordnade tabeller Bind kolumner

Kontrollen tillhandahåller en händelse som heter GridWeb.BindingChildView som utvecklare använder för att anpassa de underordnade tabellernas bindningskolumner. Detta exempel

måste visa beställningsinformationen'Enhetspris fältet i ett valutaformat. Lägg till en händelsehanterare för att ändra bindkolumns nummerformat.

C#

 // Handles the BindingChildView event to set the UnitPrice column.

private void GridWeb1_BindingChildView(Aspose.Cells.GridWeb.GridWeb childGrid, Aspose.Cells.GridWeb.Data.WebWorksheet childSheet)

{

    DataView view = (DataView)childSheet.DataSource;

    if (view.Table.TableName == "Order Details")

    {

        childSheet.BindColumns["UnitPrice"].NumberType = NumberType.Currency3;

    }

}

VB.NET

 'Handles the BindingChildView event to set the UnitPrice column.

Private Sub GridWeb1_BindingChildView(ByVal childGrid As Aspose.Cells.GridWeb.GridWeb, ByVal childSheet As 

Aspose.Cells.GridWeb.Data.WebWorksheet) Handles GridWeb1.BindingChildView

    Dim view As DataView = CType(childSheet.DataSource, DataView)

    If view.Table.TableName = "Order Details" Then

        childSheet.BindColumns("UnitPrice").NumberType = NumberType.Currency3

    End If

End Sub

Ladda data från databas och bindning

Som beskrivs iBindning av kalkylblad till en datauppsättning med hjälp av GridWebs kalkylbladsdesigner, du måste lägga till kod i blocket Page_Load för att ladda data till datamängden från en databas och binda datamängden till bladet i

Nästa steg.

Klassen Asppose.Grid.Web.Data.WebWorksheet har några användbara egenskaper.

  • Till exempel, egenskapen EnableCreateBindColumnHeader används för att skapa rubrikerna för den bundna kolumnen i arket, eller kolumnen

rubriker visar de bundna kolumnnamnen. Det tar värdenaSann ellerfalsk.

  • Egenskaperna BindStartRow och BindStartColumn anger positionen i arket GridWeb-kontroll som källan ska vara bunden till.
  • Egenskapen EnableExpandChildView används för att inaktivera den utökade underordnade vyn för kalkylbladet. Som standard är det satt till sant.

Klassen har också några användbara metoder.

  • Metoden DataBind() binder ett ark med källan.
  • CreateNewBindRow() lägger till en ny rad och binder den till datakällan.
  • DeleteBindRow() tar bort en bunden rad.
  • Metoden SetRowExpand() ställer in den utökade raden och visar innehållet i den underordnade vyn i databindningsläget.
  • Metoden GetRowExpand() får ett booleskt värde som indikerar om raden expanderas eller inte.

I koden nedan är DataSet-objektet “dataSet21” fyllt med data baserat på tre tabeller. Kundtabellen filtreras för att göra den till

första tabellen i den hierarkiska displayen. Ett WebWorksheet-objekt med namnet “sheet” skapas, vilket rensar arket först och sedan ställer in det

kopplat till datakällan.

C#

 private void Page_Load(object sender, System.EventArgs e)

{

    // Put user code to initialize the page here

    if (!IsPostBack)

    {

        BindWithoutInSheetHeaders();

    }

}

private void BindWithoutInSheetHeaders()

{

    DemoDatabase2 db = new DemoDatabase2();

    string path = MapPath(".");

    path = path.Substring(0, path.LastIndexOf("\\"));

    path = path.Substring(0, path.LastIndexOf("\\"));

    db.oleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + "\\Database\\Northwind.mdb";

    try

    {

        // Connects to database and fetches data.

        // Customers Table.

        db.oleDbDataAdapter1.Fill(dataSet21);

        // Orders Table.

        db.oleDbDataAdapter2.Fill(dataSet21);

        // OrderDetailTable.

        db.oleDbDataAdapter3.Fill(dataSet21);

        // Filter data

        dataSet21.Customers.DefaultView.RowFilter = "CustomerID<'BSAAA'";

        WebWorksheet sheet = GridWeb1.WebWorksheets[0];

        // Clears the sheet.

        sheet.Cells.Clear();

        // Disables creating in-sheet headers.

        sheet.EnableCreateBindColumnHeader = false;

        // Data cells begin from row 0.

        sheet.BindStartRow = 0;

        // Bind the sheet to the dataset.

        sheet.DataBind();

    }

    finally

    {

        db.oleDbConnection1.Close();

    }

}

VB.NET

 Private Sub Page_Load(ByVal avsändare Som System.Object, ByVal e As System.EventArgs) Hanterar MyBase.Load

 'Sätt in användarkod för att initiera sidan här

 Om inte IsPostBack 

 BindWithoutInSheetHeaders()

 Avsluta om

Avsluta Sub

Private Sub BindWithoutInSheetHeaders()

 Dim db As DemoDatabase2 = New DemoDatabase2()

Dim sökväg As String = MapPath(".")

 path = path.Substring(0, path.LastIndexOf("\"))

 path = path.Substring(0, path.LastIndexOf("\"))

 db.OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Datakälla=" + sökväg + "\Databas\Northwind.mdb"

 Prova

 ' Ansluter till databasen och hämtar data.

 ' Kundtabell.

 db.OleDbDataAdapter1.Fill(DataSet21)

 ' Beställningstabell.

 db.OleDbDataAdapter2.Fill(DataSet21)

 ' OrderDetailTable.

 db.OleDbDataAdapter3.Fill(DataSet21)

 ' Filtrera data

 DataSet21.Customers.DefaultView.RowFilter = "Kund-ID<'BSAAA'"

        Dim sheet As WebWorksheet = GridWeb1.WebWorksheets(0)

        ' Clears the sheet.

        sheet.Cells.Clear()

        ' Disables creating in-sheet headers.

        sheet.EnableCreateBindColumnHeader = False

        ' Data cells begin from row 0.

        sheet.BindStartRow = 0

        ' Bind the sheet to the dataset.

        sheet.DataBind()

    Finally

        db.OleDbConnection1.Close()

    End Try

End Sub