我想更改RadGrid Telerik中列的颜色。我想为col index 2,3
添加颜色,为col Index 0,1
添加不同的颜色。
col 2,3的颜色正常,但对于Col index 0,1 is not working,
,索引中没有颜色Col index 0 & 1
这是代码:
bool dontRunHandler;
private void datagridview_CellFormatting(object sender, CellFormattingEventArgs e)
{
e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.NumberOfColorsProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);
if (dontRunHandler == false)
{
if (e.CellElement.ColumnIndex != 2 && e.CellElement.ColumnIndex != 3 ) return;
e.CellElement.DrawFill = true;
e.CellElement.NumberOfColors = 1;
e.CellElement.BackColor = Color.LightSlateGray;
e.CellElement.GradientStyle = GradientStyles.Linear;
}
else
{
if (e.CellElement.ColumnIndex != 0 && e.CellElement.ColumnIndex != 1 ) return;
e.CellElement.DrawFill = true;
e.CellElement.NumberOfColors = 1;
e.CellElement.BackColor = Color.MediumVioletRed;
e.CellElement.GradientStyle = GradientStyles.Linear;
}
}
答案 0 :(得分:1)
您的代码显示它只会运行两个中的一个条件
如果dontRunHandler =false
它将为单元格2和3着色。
否则如果dontRunHandler =true
它将为单元格0和1着色。
尝试删除if else,看看它是否解决了问题。
现在发生这种情况是因为首先if语句返回,因为它认为你的列不是0或1。
我建议您使用ColunnCreated事件。假设更快,更语义化。
protected void RadGrid1_ColumnCreated(object sender, GridColumnCreatedEventArgs e)
{
if (e.Column.IsBoundToFieldName("ProductID"))
{
e.Column.ItemStyle.CssClass = "MyClass1";
}
else if (e.Column.IsBoundToFieldName("ProductName"))
{
e.Column.ItemStyle.CssClass = "MyClass2";
}
}
...
<style type="text/css">
.MyClass1
{
color: Red;
}
.MyClass2
{
color: Blue;
}
</style>
你认为这对你有用吗?或者您出于某种原因专门使用索引?
如果你想让你的例子工作,我会做这样的事情:
e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.NumberOfColorsProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);
if (e.CellElement.ColumnIndex == 2 || e.CellElement.ColumnIndex == 3)
{
e.CellElement.DrawFill = true;
e.CellElement.NumberOfColors = 1;
e.CellElement.BackColor = Color.LightSlateGray;
e.CellElement.GradientStyle = GradientStyles.Linear;
}
else if (e.CellElement.ColumnIndex == 0 || e.CellElement.ColumnIndex == 1)
{
e.CellElement.DrawFill = true;
e.CellElement.NumberOfColors = 1;
e.CellElement.BackColor = Color.MediumVioletRed;
e.CellElement.GradientStyle = GradientStyles.Linear;
}