1

我想更改 RadGrid Telerik 中列的颜色。我想给 to 一个颜色col index 2,3和不同的颜色 to 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;
    }

}

在此处输入图像描述

4

1 回答 1

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;
        }
于 2012-11-10T18:25:22.580 回答