ASP.NET MVC Controls | ComponentOne
Working with Controls / DashboardLayout / Work with DashboardLayout / Layouts / Manual Grid Layout
In This Topic
    Manual Grid Layout
    In This Topic

    Manual grid layout, as the name suggests, arranges the tiles in the tabular form in the specified manner. The layout is similar to auto grid layout except the fact that you can specify the row and column numbers where a particular tile should be positioned.

    You can set the manual grid layout using the AttachManualGridLayout method provided by the DashboardLayoutBuilder class. Position of the tiles in the manual grid layout is specified using the Row and Column properties of the ManualGridTileBuilder class. Each cell in the manual grid layout can contain multiple controls, and these controls can be grouped together with the help of the ManualGridGroup class. Also, it provides the ManualGridTile class that represents the tiles in the manual grid layout.

    The following image shows how DashboardLayout control appears after adding the manual grid layout. This example uses the sample created in the QuickStart section.

    DashboardLayout control with the manual grid layout

    The following code example demonstrates how to set manual grid layout for the DashboardLayout control.

    Razor
    Copy Code
    @using ApplicationName.Models
    @model IEnumerable<ProductData>
    
    <style>
        .wj-dashboard .wj-flexchart {
            margin: 0px;
            padding: 4px;
            border: none;
            height: 240px;
        }
    </style>
    
    <div id="DemoName">
        <p style="font-size:large;">Product Dashboard Demo</p>
    
        @(Html.C1().FlexPie<ProductData>().Id("CategorySales")
          .Bind("Category", "Sales", Model))
    
        @(Html.C1().FlexChart().Id("ProductsStock")
         .Bind("ProductName", Model)
         .ChartType(C1.Web.Mvc.Chart.ChartType.Column)
         .Series(sers =>
         {
             sers.Add()
            .Binding("UnitsInStock")
            .Name("Stock Units");
         })
         .Series(sers =>
         {
             sers.Add()
            .Binding("UnitsOnOrder")
            .Name("OrderUnits");
         }))
    
        @(Html.C1().FlexGrid<ProductData>().Id("ProductDetails")
         .AutoGenerateColumns(false)
         .Bind(Model)
         .Columns(bl =>
         {
             bl.Add(cb => cb.Binding("ProductID").Align("Center"));
             bl.Add(cb => cb.Binding("ProductName"));
             bl.Add(cb => cb.Binding("Category"));
             bl.Add(cb => cb.Binding("ReorderLevel"));
         }))
    </div>
    
    <h2>Manual Grid Layout</h2>
    <br />
    @(Html.C1().DashboardLayout()
        .AttachManualGridLayout(mglb => mglb.Orientation(LayoutOrientation.Vertical)
            .MaxRowsOrColumns(3)
            .CellSize(303)
            .Items(isb =>
            {
                isb.Add().Children(cb =>
                {
                    cb.Add().HeaderText("Category Sales")
                        .Content("#CategorySales")
                        .RowSpan(1).ColumnSpan(1);
                    cb.Add().HeaderText("Products Stock")
                        .Content("#ProductsStock")
                        .RowSpan(1).ColumnSpan(1)
                        .Row(1).Column(3);
                });
                isb.Add().Children(cb =>
                {
                    cb.Add().HeaderText("Product Details")
                        .Content("#ProductDetails")
                        .RowSpan(1).ColumnSpan(2)
                        .Row(1).Column(2);
                });
            })))