Introduction
This article describe the datagrid events to get row content, changing
particular column color, hiding particular column at runtime in silverlight.
We can get the row content of datagrid at runtime with the help of datagrid
events. We can also change the color of particular column in silverlight at
runtime.
We can hide the particular column of datagrid at runtime.
Step 1: Get the row content at runtime using LoadingRow Event of datagrid
First datagrid looks like as following
Get the loadingrow event of silverlight datagrid as follow.Here we change the
row content color using loadingrow event at runtime.
EventHandler<DataGridRowEventArgs>(Customerdatagrid_LoadingRow);
void
Customerdatagrid_LoadingRow(object sender,
DataGridRowEventArgs e)
{
//
CustomerDetail is a table at service side
ServiceReference1.CustomerDetail
clist = e.Row.DataContext as ServiceReference1.CustomerDetail;
FrameworkElement el;
el = this.Customerdatagrid.Columns[1].GetCellContent(e.Row);
DataGridCell changeCell =
GetParent(el, typeof(DataGridCell))
as DataGridCell;
SolidColorBrush brush =
new SolidColorBrush(Colors.Black);
if (changeCell !=
null)
{
if (clist.value > 0)
{
brush = new
SolidColorBrush(Colors.Green);
}
else if
(clist.value < 0)
{
brush = new
SolidColorBrush(Colors.Red);
}
changeCell.Foreground = brush;
}
}
Datagrid looks like as following
Step 2: Change the color of particular column in datagird using LayoutUpdated
event
//DatagridCell Style
<UserControl.Resources>
<Style
TargetType="sdk:DataGridCell"
x:Key="DataGridCellStyle">
<Setter
Property="Background"
Value="Transparent"
/>
<Setter
Property="Foreground"
Value="#FF0059C0"/>
<Setter
Property="FontStyle"
Value="Normal"/>
<Setter
Property="FontFamily"
Value="Arial"/>
<Setter
Property="FontWeight"
Value="SemiBold"/>
</Style>
</UserControl.Resources>
Customerdatagrid.LayoutUpdated
+= new EventHandler(Customerdatagrid_LayoutUpdated);
Boolean
headerflag = false;
void Customerdatagrid_LayoutUpdated(object
sender, EventArgs e)
{
if (headerflag)
{
DataGridColumn col =
Customerdatagrid.Columns[2];
col.CellStyle = (Style)Resources["DataGridCellStyle"];
headerflag = false;
}
}
Datagrid looks like as following
Step 3: Hide the particular column of datagrid using AutoGeneratingColumn
Event
Customerdatagrid.AutoGeneratingColumn += new
EventHandler<DataGridAutoGeneratingColumnEventArgs>(Customerdatagrid_AutoGeneratingColumn);
void Customerdatagrid_AutoGeneratingColumn(object
sender, DataGridAutoGeneratingColumnEventArgs
e)
{
headerflag = true;
DataGridTextColumn tcolumn = (DataGridTextColumn)e.Column;
string headercolumn =
e.Column.Header.ToString();
if (headercolumn ==
"Name")
{
tcolumn.Visibility = Visibility.Collapsed;
}
}
Datagrid looks like as following
Summary : We can hide the datagrid column at runtime also we can change
the color of datagrid column using datagird events. Using loadingrow events we
can get the row content at runtime.