Change Background Color of Gridview Header in C

A multi-purpose grid control with advanced binding and templating options and sorting support.

Usage & Scenarios

This control is different from the built-in GridView and is not derived from it.

The Business Pack GridView control is a advanced grid control with many features.

The version 1.1 supports the following features (except of the features supported in the built-in GridView):

  • Inline Insert row
  • Column Hiding
  • Column Reordering
  • Column Resizing
  • Row Reordering

The following features are planned to be added in the following releases:

  • Customizable Filters
  • Grouping
  • Row Detail
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}" HeaderText="ID" />         <bp:GridViewTextColumn ValueBinding="{value: Name}" HeaderText="Name" />         <bp:GridViewTextColumn ValueBinding="{value: BirthDate}" HeaderText="Birth Date"                                FormatString="dd.MM.yyyy" />         <bp:GridViewTemplateColumn>             <ContentTemplate>                 <b>{{value: Orders}}</b>             </ContentTemplate>         </bp:GridViewTemplateColumn>     </Columns> </bp:GridView>                      
                        using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample1 {     public class ViewModel : DotvvmViewModelBase     {         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer>              {                 OnLoadingData = GetData,                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", BirthDate = DateTime.Now.AddYears(-i), Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample1 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}"              ShowHeaderWhenNoData="true">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}"                                HeaderText="Customer ID" />         <bp:GridViewTextColumn ValueBinding="{value: Name}"                                HeaderCssClass="gridview-header-highlight">             <HeaderTemplate>                 <i>Name</i>             </HeaderTemplate>         </bp:GridViewTextColumn>     </Columns> </bp:GridView>                      
                        using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample2 {     public class ViewModel : DotvvmViewModelBase     {         public bool ShowHeaderWhenNoData { get; set; }         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer>              {                 OnLoadingData = GetData,                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}" });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample2 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}"              ShowFooter="true">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}" HeaderText="ID" />         <bp:GridViewTextColumn ValueBinding="{value: Name}" HeaderText="Name" />         <bp:GridViewTextColumn ValueBinding="{value: Orders}" HeaderText="Orders"                                 FooterCssClass="gridview-footer">             <FooterTemplate>                 <p>Total orders: {{value: TotalOrders}}</p>             </FooterTemplate>         </bp:GridViewTextColumn>     </Columns> </bp:GridView>                      
                        using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample3 {     public class ViewModel : DotvvmViewModelBase     {         public int TotalOrders => Customers.Items.Sum(c => c.Orders);          public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer>              {                 OnLoadingData = GetData,                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample3 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}"                                HeaderText="Id"                                AllowSorting="true"                                SortAscendingHeaderCssClass="sort-asc-custom"                                SortDescendingHeaderCssClass="sort-desc-custom" />         <bp:GridViewTextColumn ValueBinding="{value: Name}"                                HeaderText="Name"                                AllowSorting="true"                                SortExpression="LastName" />         <bp:GridViewTextColumn ValueBinding="{value: Orders}"                                HeaderText="Orders"                                AllowSorting="true" />     </Columns> </bp:GridView>                      
                        using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample4 {     public class ViewModel : DotvvmViewModelBase     {         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer>              {                 OnLoadingData = GetData,                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample4 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}" HeaderText="ID" />         <bp:GridViewTextColumn ValueBinding="{value: Name}" HeaderText="Name" />         <bp:GridViewTextColumn ValueBinding="{value: BirthDate}" HeaderText="Birth Date"                                 FormatString="dd.MM.yyyy" />         <bp:GridViewTextColumn ValueBinding="{value: Orders}" HeaderText="Orders" />     </Columns> </bp:GridView>  <bp:DataPager DataSet="{value: Customers}" />                      
                        using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample5 {     public class ViewModel : DotvvmViewModelBase     {         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer>              {                 OnLoadingData = GetData,                 PagingOptions =                 {                     PageSize = 5                 },                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };                          return base.Init();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", BirthDate = DateTime.Now.AddYears(-i), Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample5 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}"              InlineEditing="true">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}"                                HeaderText="ID"                                IsEditable="false" />         <bp:GridViewTextColumn ValueBinding="{value: Name}"                                HeaderText="Name" />         <bp:GridViewTemplateColumn HeaderText="Birthdate">             <ContentTemplate>                 <dot:Literal Text="{value: BirthDate}"                              FormatString="dd.MM.yyyy" />             </ContentTemplate>             <EditTemplate>                 <bp:DateTimePicker SelectedDate="{value: BirthDate}"                                    FormatString="dd.MM.yyyy"                                    Mode="Date" />             </EditTemplate>         </bp:GridViewTemplateColumn>         <bp:GridViewTextColumn ValueBinding="{value: Orders}" />         <bp:GridViewTemplateColumn>             <ContentTemplate>                 <dot:Button Text="Edit" Click="{command: _parent.EditCustomer(_this)}"/>             </ContentTemplate>             <EditTemplate>                 <dot:Button Text="Save" Click="{command: _parent.UpdateCustomer(_this)}"/>                 <dot:Button Text="Cancel" Click="{command: _parent.CancelEditCustomer()}"/>             </EditTemplate>         </bp:GridViewTemplateColumn>     </Columns> </bp:GridView>                      
                        using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.BusinessPack.Controls; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample6 {     public class ViewModel : DotvvmViewModelBase     {         public bool IsEditing { get; set; }         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer>              {                 OnLoadingData = GetData,                 RowEditOptions = new RowEditOptions {                     PrimaryKeyPropertyName = nameof(Customer.Id),                     EditRowId = -1                 },                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public void EditCustomer(Customer customer)         {             Customers.RowEditOptions.EditRowId = customer.Id;             IsEditing = true;         }          public void UpdateCustomer(Customer customer)         {             // Submit customer changes to your database..             CancelEdit();         }          private void CancelEdit()         {             Customers.RowEditOptions.EditRowId = -1;             IsEditing = false;         }          public void CancelEditCustomer()         {             CancelEdit();             Customers.RequestRefresh(true);         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", BirthDate = DateTime.Now.AddYears(-i), Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample6 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}"              InlineInserting="true"              InlineInsertRowPlacement="Bottom">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}"                                HeaderText="ID"                                IsEditable="false" />         <bp:GridViewTextColumn ValueBinding="{value: Name}"                                HeaderText="Name" />         <bp:GridViewTemplateColumn HeaderText="Birthdate">             <ContentTemplate>                 <dot:Literal Text="{value: BirthDate}"                              FormatString="dd.MM.yyyy" />             </ContentTemplate>             <InsertTemplate>                 <bp:DateTimePicker SelectedDate="{value: BirthDate}"                                    FormatString="dd.MM.yyyy"                                    Mode="Date" />             </InsertTemplate>         </bp:GridViewTemplateColumn>         <bp:GridViewTextColumn ValueBinding="{value: Orders}" />     </Columns> </bp:GridView>  <br /> <bp:Button Text="Add"            Click="{command: InsertNewCustomer()}"            Visible="{value: !IsInserting}" /> <bp:Button Text="Save"            Click="{command: SaveNewCustomer()}"            Visible="{value: IsInserting}" /> <bp:Button Text="Cancel"            Click="{command: CancelInsertNewCustomer()}"            Visible="{value: IsInserting}" />                      
                        using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.BusinessPack.Controls; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample7 {     public class ViewModel : DotvvmViewModelBase     {         public bool IsInserting { get; set; }         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer>              {                 OnLoadingData = GetData,                 RowEditOptions = new RowEditOptions {                     PrimaryKeyPropertyName = nameof(Customer.Id)                 },                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public void InsertNewCustomer()         {             Customers.RowInsertOptions.InsertedItem = new Customer {                 Id = Customers.Items.Max(c => c.Id) + 1,                 Orders = 0             };             IsInserting = true;         }          public void CancelInsertNewCustomer()         {             Customers.RowInsertOptions.InsertedItem = null;             IsInserting = false;         }          public void SaveNewCustomer()         {             // Save inserted item to database             Customers.Items.Add(Customers.RowInsertOptions.InsertedItem);             CancelInsertNewCustomer();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", BirthDate = DateTime.Now.AddYears(-i), Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample7 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
  • Order.cs
                        <bp:GridView DataSource="{value: Orders}"              InlineEditing="true">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}"                                HeaderText="Order ID" />         <bp:GridViewComboBoxColumn ValueBinding="{value: DeliveryType}"                                    DataSourceBinding="{value: _parent.DeliveryTypes}"                                    HeaderText="Delivery type" />         <bp:GridViewTemplateColumn HeaderText="Date">             <ContentTemplate>                 <dot:Literal Text="{value: CreatedDate}"                              FormatString="dd.MM.yyyy hh:mm" />             </ContentTemplate>             <EditTemplate>                 <bp:DateTimePicker SelectedDate="{value: CreatedDate}"                                    FormatString="dd.MM.yyyy hh:mm"                                    Mode="DateTime" />             </EditTemplate>         </bp:GridViewTemplateColumn>         <bp:GridViewCheckBoxColumn ValueBinding="{value: IsPaid}"                                    HeaderText="Is Paid?" />         <bp:GridViewTemplateColumn>             <ContentTemplate>                 <bp:Button Text="Edit"                            Click="{command: _root.Orders.RowEditOptions.EditRowId = Id}" />             </ContentTemplate>             <EditTemplate></EditTemplate>         </bp:GridViewTemplateColumn>     </Columns> </bp:GridView>                      
                        using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample8 {     public class ViewModel : DotvvmViewModelBase     {         public BusinessPackDataSet<Order> Orders { get; set; }         public List<string> DeliveryTypes { get; set; } = new List<string> { "Post office", "Home" };          public override Task Init()         {             Orders = new BusinessPackDataSet<Order> {                 OnLoadingData = GetData,                 RowEditOptions = new RowEditOptions {                     PrimaryKeyPropertyName = nameof(Customer.Id),                     EditRowId = -1                 },                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public GridViewDataSetLoadedData<Order> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Order> GetQueryable(int size)         {             var numbers = new List<Order>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Order { Id = i + 1, DeliveryType = DeliveryTypes[(i + 1) % 2], IsPaid = (i + 1) % 2 == 0, CreatedDate = DateTime.Now.AddDays(-i) });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample8 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
                        using System;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample8 {     public class Order     {         public int Id { get; set; }         public string DeliveryType { get; set; }         public bool IsPaid { get; set; }         public DateTime CreatedDate { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}"              InlineEditing="true">     <RowDecorators>         <%-- Set different css class for even and odd rows --%>         <dot:Decorator class="{value: Id % 2 == 0 ? 'even-row' : 'odd-row'}" />         <%-- Set background color warning for customer without any orders --%>         <dot:Decorator style="{value: Orders == 0 ? 'background-color: palevioletred !important;' : ''}" />     </RowDecorators>     <EditRowDecorators>         <%-- Set css class for edit row scenario --%>         <dot:Decorator class="edit-row" />     </EditRowDecorators>     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}"                                 HeaderText="Customer ID" />         <bp:GridViewTextColumn ValueBinding="{value: Name}"                                HeaderText="Name" />         <bp:GridViewTextColumn ValueBinding="{value: Orders}"                                 HeaderText="# of orders" />         <bp:GridViewTemplateColumn>             <ContentTemplate>                 <bp:Button Text="Edit"                            Click="{command: _root.Customers.RowEditOptions.EditRowId = Id}" />             </ContentTemplate>             <EditTemplate></EditTemplate>         </bp:GridViewTemplateColumn>     </Columns> </bp:GridView>  <style type="text/css">     .even-row {         background-color: aquamarine !important;     }      .odd-row {         background-color: azure !important;     }      .edit-row {         background-color: yellow !important;     } </style>                      
                        using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample9 {     public class ViewModel : DotvvmViewModelBase     {         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer> {                 OnLoadingData = GetData,                 RowEditOptions = new RowEditOptions {                     PrimaryKeyPropertyName = nameof(Customer.Id),                     EditRowId = -1                 },                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", BirthDate = DateTime.Now.AddYears(-i), Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample9 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView DataSource="{value: Customers}"              UserSettings="{value: UserSettings}"              AllowReorderColumns="true">     <Columns>         <bp:GridViewTextColumn ColumnName="CustomerName"                                ValueBinding="{value: Name}"                                HeaderText="Name" />         <bp:GridViewTextColumn ColumnName="CustomerOrders"                                ValueBinding="{value: Orders}"                                HeaderText="Orders" />         <bp:GridViewTextColumn ColumnName="CustomerId"                                ValueBinding="{value: Id}"                                HeaderText="Customer ID" />         <bp:GridViewTextColumn ColumnName="CustomerBirthdate"                                ValueBinding="{value: BirthDate}"                                FormatString="dd.MM.yyyy"                                HeaderText="Birthdate" />     </Columns> </bp:GridView>                      
                        using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.BusinessPack.Controls; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample10 {     public class ViewModel : DotvvmViewModelBase     {         public GridViewUserSettings UserSettings { get; set; }         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer> {                 OnLoadingData = GetData,                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              UserSettings = new GridViewUserSettings {                 EnableUserSettings = true,                 ColumnsSettings = new List<GridViewColumnSetting> {                     new GridViewColumnSetting {                         ColumnName = "CustomerId",                         DisplayOrder = 0,                         ColumnWidth = 50                     },                     new GridViewColumnSetting {                         ColumnName = "CustomerName",                         DisplayOrder = 1,                         ColumnWidth = 400                     },                     new GridViewColumnSetting {                         ColumnName = "CustomerBirthdate",                         DisplayOrder = 2                     },                     new GridViewColumnSetting {                         ColumnName = "CustomerOrders",                         DisplayOrder = 3                     }                 }             };              return base.Init();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", BirthDate = DateTime.Now.AddYears(-i), Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample10 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      
  • page.dothtml
  • ViewModel.cs
  • Customer.cs
                        <bp:GridView RenderSettings.Mode="Server"              DataSource="{value: Customers}">     <Columns>         <bp:GridViewTextColumn ValueBinding="{value: Id}"                                 HeaderText="Customer ID" />         <bp:GridViewTextColumn ValueBinding="{value: Name}"                                 HeaderText="Name" />         <bp:GridViewTextColumn ValueBinding="{value: BirthDate}"                                FormatString="dd.MM.yyyy"                                HeaderText="Birthdate"/>         <bp:GridViewTemplateColumn HeaderText="# of orders">             <ContentTemplate>                 <b>{{value: Orders}}</b>             </ContentTemplate>         </bp:GridViewTemplateColumn>     </Columns> </bp:GridView>                      
                        using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using DotVVM.Framework.Controls; using DotVVM.Framework.ViewModel;   namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample11 {     public class ViewModel : DotvvmViewModelBase     {         public BusinessPackDataSet<Customer> Customers { get; set; }          public override Task Init()         {             Customers = new BusinessPackDataSet<Customer> {                 OnLoadingData = GetData,                 SortingOptions =                 {                     SortExpression = nameof(Customer.Id)                 }             };              return base.Init();         }          public GridViewDataSetLoadedData<Customer> GetData(IGridViewDataSetLoadOptions gridViewDataSetOptions)         {             var queryable = GetQueryable(15);             return queryable.GetDataFromQueryable(gridViewDataSetOptions);         }          private IQueryable<Customer> GetQueryable(int size)         {             var numbers = new List<Customer>();             for (var i = 0; i < size; i++)             {                 numbers.Add(new Customer { Id = i + 1, Name = $"Customer {i + 1}", BirthDate = DateTime.Now.AddYears(-i), Orders = i });             }             return numbers.AsQueryable();         }     } }                      
                        using System; using System.Linq;  namespace DotvvmWeb.Views.Docs.Controls.businesspack.GridView.sample11 {     public class Customer     {         public int Id { get; set; }         public string Name { get; set; }         public string LastName => !string.IsNullOrWhiteSpace(Name) ? Name.Split(' ').LastOrDefault() : "";         public DateTime BirthDate { get; set; }         public int Orders { get; set; }     } }                      

Properties

Name Type Description Notes Default Value
property icon AllowReorderColumns Boolean Gets or sets whether it is allowed to change order of GridView columns.

attribute

inner element

static value

bindable

default

False
property icon Attributes Dictionary<String,Object>

attribute

inner element

static value

bindable

default

property icon ClientIDMode ClientIDMode Gets or sets the client ID generation algorithm.

attribute

inner element

static value

bindable

default

Static
property icon Columns List<GridViewColumn> Gets or sets a collection of columns that will be placed inside the grid.

attribute

inner element

static value

bindable

default

property icon DataContext Object Gets or sets a data context for the control and its children. All value and command bindings are evaluated in context of this value.

attribute

inner element

static value

bindable

default

property icon DataSource Object Gets or sets the source collection or a GridViewDataSet that contains data in the control.

attribute

inner element

static value

bindable

default

property icon EditRowDecorators List<Decorator> Gets or sets a list of decorators that will be applied on each row which is in edit mode.

attribute

inner element

static value

bindable

default

property icon EmptyDataTemplate ITemplate Gets or sets the template which will be displayed when the DataSource is empty.

attribute

inner element

static value

bindable

default

property icon FilterPlacement GridViewFilterPlacement Gets or sets the place where the filters will be created.

attribute

inner element

static value

bindable

default

HeaderRow
property icon FreezeHeaderRow Boolean Gets or sets whether the header row is freezed and is always visible.

attribute

inner element

static value

bindable

default

False
property icon ID String Gets or sets the unique control ID.

attribute

inner element

static value

bindable

default

property icon InlineEditing Boolean Gets or sets whether the inline editing is allowed in the Grid. If so, you have to use a GridViewDataSet as the DataSource.

attribute

inner element

static value

bindable

default

False
property icon InlineInserting Boolean Gets or sets whether the insert row should be rendered in the Grid. If so, you have to use a BusinessPackDataSet as the DataSource.

attribute

inner element

static value

bindable

default

False
property icon InlineInsertRowPlacement InsertRowPlacement Gets or sets whether the insert row should be rendered in the Grid. If so, you have to use a BusinessPackDataSet as the DataSource.

attribute

inner element

static value

bindable

default

Top
property icon InnerText String Gets or sets the inner text of the HTML element.

attribute

inner element

static value

bindable

default

property icon InsertRowDecorators List<Decorator> Gets or sets a list of decorators that will be applied on insert row.

attribute

inner element

static value

bindable

default

property icon RowDecorators List<Decorator> Gets or sets a list of decorators that will be applied on each row which is not in the edit mode.

attribute

inner element

static value

bindable

default

property icon ShowFooter Boolean Gets or sets whether the footer should be displayed or not

attribute

inner element

static value

bindable

default

False
property icon ShowHeaderWhenNoData Boolean Gets or sets whether the header row should be displayed when the grid is empty.

attribute

inner element

static value

bindable

default

False
property icon SortChanged Action<String> Gets or sets the command that will be triggered when the user changed the sort order.

attribute

inner element

static value

bindable

default

property icon UserSettings GridViewUserSettings Gets or sets the user's GridView settings. It can be used to persist column visibility, order, width, etc.

attribute

inner element

static value

bindable

default

property icon Visible Boolean Gets or sets whether the control is visible.

attribute

inner element

static value

bindable

default

True

HTML produced by the control

Change Background Color of Gridview Header in C

Source: https://www.dotvvm.com/docs/1.1/controls/businesspack/GridView

0 Response to "Change Background Color of Gridview Header in C"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel