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 | |
|---|---|---|---|---|---|
| | AllowReorderColumns | Boolean | Gets or sets whether it is allowed to change order of GridView columns. | attribute inner element static value bindable default | False |
| | Attributes | Dictionary<String,Object> | attribute inner element static value bindable default | ||
| | ClientIDMode | ClientIDMode | Gets or sets the client ID generation algorithm. | attribute inner element static value bindable default | Static |
| | Columns | List<GridViewColumn> | Gets or sets a collection of columns that will be placed inside the grid. | attribute inner element static value bindable default | |
| | 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 | |
| | DataSource | Object | Gets or sets the source collection or a GridViewDataSet that contains data in the control. | attribute inner element static value bindable default | |
| | 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 | |
| | EmptyDataTemplate | ITemplate | Gets or sets the template which will be displayed when the DataSource is empty. | attribute inner element static value bindable default | |
| | FilterPlacement | GridViewFilterPlacement | Gets or sets the place where the filters will be created. | attribute inner element static value bindable default | HeaderRow |
| | FreezeHeaderRow | Boolean | Gets or sets whether the header row is freezed and is always visible. | attribute inner element static value bindable default | False |
| | ID | String | Gets or sets the unique control ID. | attribute inner element static value bindable default | |
| | 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 |
| | 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 |
| | 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 |
| | InnerText | String | Gets or sets the inner text of the HTML element. | attribute inner element static value bindable default | |
| | InsertRowDecorators | List<Decorator> | Gets or sets a list of decorators that will be applied on insert row. | attribute inner element static value bindable default | |
| | 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 | |
| | ShowFooter | Boolean | Gets or sets whether the footer should be displayed or not | attribute inner element static value bindable default | False |
| | 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 |
| | 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 | |
| | 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 | |
| | 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