Crear hoja de vista jerárquica

Crear relaciones para DataTables

Por ejemplo, usa ADO.Net API y extrae datos de las tablas de la base de datos. Para crear una hoja de vista jerárquica, debe diseñar un DataSet

objeto basado en algunas tablas y cree una relación entre ellos primero. Utilice los VS.NETDiseñador de conjuntos de datos para crear la relación. En

En este ejemplo, hay tres DataTables: Clientes, Pedidos, Detalles del pedido. La hoja muestra toda la información del cliente por defecto. Cuándo

el usuario expande un cliente, la cuadrícula muestra todos los pedidos que ha realizado el cliente. Cuando el usuario expande un pedido, la grilla muestra los detalles

de ese orden. Los datos son jerárquicos: los detalles del pedido se enumeran en pedidos y los pedidos se enumeran en clientes.

Para que esto funcione, se deben establecer las siguientes relaciones entre las tablas de datos:

  1. Cree una clave externa en los pedidos de DataTable, el campo clave es CustomerID

todo:imagen_alternativa_texto

  1. Cree una clave externa en Detalles de pedido de DataTable, el campo clave es OrderID.

todo:imagen_alternativa_texto

El diseñador de conjuntos de datos ahora se ve así:

todo:imagen_alternativa_texto

Encuadernar hoja de trabajo

Ahora usa elDiseñador de hojas de trabajo para establecer DataSource y DataMember para la hoja de trabajo y configurar las columnas de enlace de campo de datos.

El control agrega automáticamente un ícono + para cada fila que corresponde a un registro cuyo objeto vinculante (generalmente un objeto DataRowView) tiene

opiniones de niños. Cuando se hace clic en el ícono +, el registro se expande para mostrar la vista secundaria. El siguiente ejemplo utiliza elDiseñador de hojas de trabajo para atar el

hoja de trabajo a los Clientes de DataTable padre raíz.

todo:imagen_alternativa_texto

Personalizar las columnas de enlace de las tablas secundarias

El control proporciona un evento llamado GridWeb.BindingChildView que los desarrolladores usan para personalizar las columnas de vinculación de las tablas secundarias. este ejemplo

necesita mostrar los detalles del pedido'Precio unitario campo en un formato de moneda. Agregue un controlador de eventos para cambiar el formato de número de la columna de vinculación.

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

Cargar datos desde la base de datos y vinculación

Como se describe enVinculación de una hoja de trabajo a un conjunto de datos mediante el diseñador de hojas de trabajo de GridWeb, necesita agregar código al bloque Page_Load para cargar datos al DataSet desde una base de datos, y vincular el DataSet a la hoja en el

próximo paso.

La clase Asppose.Grid.Web.Data.WebWorksheet tiene algunas propiedades útiles.

  • Por ejemplo, la propiedad EnableCreateBindColumnHeader se usa para crear los encabezados de la columna enlazada dentro de la hoja, o la columna

headers muestra los nombres de las columnas enlazadas. toma los valoresverdadero ofalso.

  • Las propiedades BindStartRow y BindStartColumn especifican la posición en la hoja del control GridWeb a la que debe vincularse el origen.
  • La propiedad EnableExpandChildView se usa para deshabilitar la vista secundaria expandida para la hoja de trabajo. De forma predeterminada, se establece en verdadero.

La clase también tiene algunos métodos útiles.

  • El método DataBind() vincula una hoja con la fuente.
  • CreateNewBindRow() agrega una nueva fila y la vincula a la fuente de datos.
  • DeleteBindRow() elimina una fila enlazada.
  • El método SetRowExpand() establece la fila expandida y muestra el contenido de la vista secundaria en el modo de enlace de datos.
  • El método GetRowExpand() obtiene un valor booleano que indica si la fila se expande o no.

En el siguiente código, el objeto DataSet “dataSet21” se llena con datos basados en tres tablas. La tabla Clientes se filtra para convertirla en la

primera tabla en la visualización jerárquica. Se crea un objeto WebWorksheet llamado “hoja”, que primero borra la hoja y luego la establece

vinculado a la fuente de datos.

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 sender As System.Object, ByVal e As System.EventArgs) Maneja MyBase.Load

 'Ponga el código de usuario para inicializar la página aquí

 If Not IsPostBack Entonces

 BindWithoutInSheetHeaders()

 Terminara si

Finalizar sub

Enlace secundario privado sin encabezados de hoja ()

 Dim db como DemoDatabase2 = Nueva DemoDatabase2()

Dim ruta como cadena = MapPath(".")

 ruta = ruta.Subcadena(0, ruta.LastIndexOf("\"))

 ruta = ruta.Subcadena(0, ruta.LastIndexOf("\"))

 db.OleDbConnection1.ConnectionString = "Proveedor=Microsoft.Jet.OLEDB.4.0;Fuente de datos=" + ruta + "\Base de datos\Northwind.mdb"

 Tratar

 ' Se conecta a la base de datos y obtiene datos.

 'Tabla de Clientes.

 db.OleDbDataAdapter1.Fill(DataSet21)

 'Tabla de pedidos.

 db.OleDbDataAdapter2.Fill(DataSet21)

 ' TablaDetallesPedido.

 db.OleDbDataAdapter3.Fill(DataSet21)

 ' Filtrar datos

 DataSet21.Customers.DefaultView.RowFilter = "ID de cliente<'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