|
<SfColorPicker @bind-Value="@color"></SfColorPicker>
<SfColorPicker @bind-Value="@fontcolor"></SfColorPicker>
<SfGrid DataSource="@Orders" EnableHover=false AllowSelection=false Height="280">
<GridEvents TValue="Order" RowDataBound="RowBound"></GridEvents>
<GridColumns>
. . .
</GridColumns>
</SfGrid>
<style>
.rowcolor {
background-color: @color; //for changing the row background color
}
.e-grid .e-rowcell { //changed using CSS
color: @fontcolor !important; //for changing the font-color for row content
}
</style>
@code {
public string color { get; set; } = "#17d317";
public string fontcolor { get; set; } = "#dd2905";
public List<Order> Orders { get; set; }
. . .
public void RowBound(RowDataBoundEventArgs<Order> args)
{
args.Row.AddClass(new string[] { "rowcolor" }); //for changing the row background color
}
} |
|
@using Syncfusion.Blazor.Grids
@using Syncfusion.Blazor.Inputs
@inject IJSRuntime JSRuntime
<SfColorPicker @bind-Value="@color"></SfColorPicker>
<SfColorPicker @bind-Value="@fontcolor"></SfColorPicker>
<SfTextBox @bind-Value="_Name"></SfTextBox>
<br />
<Syncfusion.Blazor.Buttons.SfButton OnClick="SetColor">SetColor</Syncfusion.Blazor.Buttons.SfButton>
<br />
<SfGrid @ref="_Grid" DataSource="@_GridColorPickers" EnableHover=false AllowSelection=false Height="280">
<GridEvents TValue="GridColorPicker" DataBound="Bound" RowDataBound="RowBound"></GridEvents>
<GridColumns>
</GridColumn>
</GridColumn>
</GridColumns>
</SfGrid>
@code {
SfGrid<GridColorPicker> _Grid;
. . .
public void SetColor()
{
_GridColorPickers.Add(new GridColorPicker { ColorName = _Name, BackColor = color, FontColor = fontcolor });
_Grid.Refresh();
}
. . .
public async Task RowBound(RowDataBoundEventArgs<GridColorPicker> args)
{
color = args.Data.BackColor;
fontcolor = args.Data.FontColor;
await Task.Delay(500);
await JSRuntime.InvokeAsync<object>("applycolor", color, fontcolor); //calling interop function for applying the color
}
} |
|
[Interop.js]
window.applycolor = function (color, fontColor) {
var rowLength = document.querySelectorAll('.e-row').length;
if (rowLength > 0) {
document.querySelectorAll('.e-row')[rowLength - 1].bgColor = color; //setting row color
var cellLength = document.querySelectorAll('.e-row')[rowLength - 1].cells.length;
for (var i = 0; i < cellLength; i++) {
document.querySelectorAll('.e-row')[rowLength - 1].cells[i].style.color = fontColor; //setting text color for content of the cell
}
}
}
|
|
[_Host.cshtml]
<head>
. . .
<link rel='nofollow' href="_content/Syncfusion.Blazor/styles/bootstrap4.css" rel="stylesheet" />
<link rel='nofollow' href="css/site.css" rel="stylesheet" />
<script src="~/Interop.js"></script>
</head> |
|
[Interop.js]
dow.applycolor = function (color, fontColor) {
var rowLength = document.querySelectorAll('.e-row').length;
if (rowLength > 0) {
//document.querySelectorAll('.e-row')[rowLength - 1].bgColor = color; //remove this line
document.querySelectorAll('.e-row')[rowLength - 1].style.backgroundColor = color; //add this line to resolve the problem
var cellLength = document.querySelectorAll('.e-row')[rowLength - 1].cells.length;
for (var i = 0; i < cellLength; i++) {
document.querySelectorAll('.e-row')[rowLength - 1].cells[i].style.color = fontColor;
}
}
}
|
|
[Index.razor]
<SfColorPicker @bind-Value="@color"></SfColorPicker>
<SfColorPicker @bind-Value="@fontcolor"></SfColorPicker>
<SfTextBox @bind-Value="_Name"></SfTextBox>
<br />
<Syncfusion.Blazor.Buttons.SfButton OnClick="SetColor">SetColor</Syncfusion.Blazor.Buttons.SfButton>
<br />
<SfGrid @ref="_Grid" DataSource="@_GridColorPickers" EnableHover=false AllowSelection=false Height="280">
<GridEvents TValue="GridColorPicker" RowDataBound="RowBound"></GridEvents>
. . .
</SfGrid>
@code {
SfGrid<GridColorPicker> _Grid;
. ..
public void SetColor()
{
_GridColorPickers.Add(new GridColorPicker { Id=_GridColorPickers.Count() +1 , ColorName = _Name, BackColor = color, FontColor = fontcolor });
_Grid.Refresh();
}
. . .
public class GridColorPicker
{
public int Id { get; set; }
public string ColorName { get; set; }
public string BackColor { get; set; }
public string FontColor { get; set; }
}
public async Task RowBound(RowDataBoundEventArgs<GridColorPicker> args)
{
await Task.Delay(100);
await JSRuntime.InvokeAsync<object>("applycolor", args.Data.BackColor, args.Data.FontColor, args.Data.Id);
}
}
|
|
[Interop.js]
window.applycolor = function (color, fontColor, id) {
var rowLength = document.querySelectorAll('.e-row').length;
if (rowLength > 0) {
var cellLength = document.querySelectorAll('.e-row')[id - 1].cells.length;
document.querySelectorAll('.e-row')[id-1].style.backgroundColor = color;
for (var i = 0; i < cellLength; i++) {
document.querySelectorAll('.e-row')[id - 1].cells[i].style.color = fontColor;
}
}
}
|
|
. . .
<SfGrid @ref="_Grid" DataSource="@_GridColorPickers" AllowSorting="true" EnableHover=false AllowSelection=false Height="280">
<GridEvents TValue="GridColorPicker" OnActionComplete="Complete" RowDataBound="RowBound"></GridEvents>
<GridColumns>
. . .
</GridColumns>
</SfGrid>
@code {
SfGrid<GridColorPicker> _Grid;
. . .
public async Task refreshGrid()
{
List<int> ids = new List<int>();
var rec = await _Grid.GetCurrentViewRecords();
for (int i = 0; i < rec.Count(); i++)
{
ids.Add(rec.IndexOf(rec[i])+1);
}
for (int i = 0; i < rec.Count(); i++)
{
await JSRuntime.InvokeAsync<object>("applycolor", rec[i].BackColor, rec[i].FontColor, ids[i]);
}
}
. ..
public async Task RowBound(RowDataBoundEventArgs<GridColorPicker> args)
{
await Task.Delay(100);
await JSRuntime.InvokeAsync<object>("applycolor", args.Data.BackColor, args.Data.FontColor, args.Data.Id);
}
public async Task Complete(ActionEventArgs<GridColorPicker> args)
{
if (args.RequestType == Syncfusion.Blazor.Grids.Action.Sorting)
{
await Task.Delay(300);
await refreshGrid();
}
}
}
|