Telerik CellFormatting列颜色不起作用

时间:2012-11-10 18:13:05

标签: c# telerik telerik-grid radgrid cell-formatting

我想更改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;
    }

}

enter image description here

1 个答案:

答案 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;
        }