C# 如何通过cellFormatting Telerik覆盖单元格颜色

C# 如何通过cellFormatting Telerik覆盖单元格颜色,c#,.net,winforms,telerik,radgridview,C#,.net,Winforms,Telerik,Radgridview,我在Telerik上,我正在尝试格式化一个col值。列索引编号12已经指定了一种颜色(它可以工作),然后我想查找一个特定的值,如果它存在,请更改单元格颜色。如果单元格值为4354,则更改单元格颜色…但什么也没有发生。 下面代码中的错误是什么 private int cellValue=4354 for (int i = 0; i < TelerikRadGridView.Rows.Count; i++) { if (TelerikRadGridView.Rows[i].Cells[i]

我在Telerik上,我正在尝试格式化一个col值。列索引编号
12
已经指定了一种颜色(它可以工作),然后我想查找一个特定的值,如果它存在,请更改单元格颜色。如果单元格值为4354,则更改单元格颜色…但什么也没有发生。 下面代码中的错误是什么

private int cellValue=4354

for (int i = 0; i < TelerikRadGridView.Rows.Count; i++)
 {
 if (TelerikRadGridView.Rows[i].Cells[i].Value == (object)cellValue)
      {
            e.CellElement.BackColor = Color.Gold;
         }
   }
for(int i=0;i
这是完整的代码:

private int cellValue = 4354;
private void TelerikRadGridView_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 
                && e.CellElement.ColumnIndex != 4
                && e.CellElement.ColumnIndex != 5 
                && e.CellElement.ColumnIndex != 7 
                && e.CellElement.ColumnIndex != 11 
                && e.CellElement.ColumnIndex != 12 
                && e.CellElement.ColumnIndex != 13) return;
                e.CellElement.DrawFill = true;
                e.CellElement.NumberOfColors = 1;
                e.CellElement.BackColor = Color.LightSlateGray;
                e.CellElement.GradientStyle = GradientStyles.Linear;
            }
            for (int i = 0; i < TelerikRadGridView.Rows.Count; i++)
            {
                if (TelerikRadGridView.Rows[i].Cells[i].Value == (object)cellValue)
                {
                    e.CellElement.BackColor = Color.Gold;
                }
            }
private int cellValue=4354;
私有void TelerikRadGridView_CellFormatting(对象发送方,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)
{
如果(e.CellElement.ColumnIndex!=2
&&e.CellElement.ColumnIndex!=3
&&e.CellElement.ColumnIndex!=4
&&e.CellElement.ColumnIndex!=5
&&e.CellElement.ColumnIndex!=7
&&e.CellElement.ColumnIndex!=11
&&e.CellElement.ColumnIndex!=12
&&e.CellElement.ColumnIndex!=13)返回;
e、 CellElement.DrawFill=true;
e、 CellElement.NumberOfColor=1;
e、 CellElement.BackColor=Color.LightSlateGray;
e、 CellElement.GradientStyle=GradientStyles.Linear;
}
对于(int i=0;i
为您重新编写它,以便它可以执行您希望它执行的操作:

private int cellValue = 4354;
private void TelerikRadGridView_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 
        && e.CellElement.ColumnIndex != 4
        && e.CellElement.ColumnIndex != 5 
        && e.CellElement.ColumnIndex != 7 
        && e.CellElement.ColumnIndex != 11 
        && e.CellElement.ColumnIndex != 12 
        && e.CellElement.ColumnIndex != 13) return;
        else
        {
           if(e.CellElement.Value != null)
           {
               if (Double.Parse(e.CellElement.Value.ToString()) != cellValue)
               {
                   e.CellElement.DrawFill = true;
                   e.CellElement.NumberOfColors = 1;
                   e.CellElement.BackColor = Color.LightSlateGray;
                   e.CellElement.GradientStyle = GradientStyles.Linear;
               }
               else
               {
                   e.CellElement.DrawFill = true;
                   e.CellElement.NumberOfColors = 1;
                   e.CellElement.BackColor = Color.Gold;
                   e.CellElement.GradientStyle = GradientStyles.Linear;
               }
           }
        }
    }

您现在已经知道了例程:)。请告诉我我的解决方案是否适合您。如果不适合,请与我聊天。我将背景颜色更改为?:表达式,并避免使用DrawFill等的双重代码。当我使用上述方法时,我收到一条错误消息
目标调用异常未处理
这可能是因为我使用的bool变量,原因是davnce view我禁用所有彩色列。在哪一行代码中出现异常?您是否与backgroundworker一起工作?如果这样做,您必须在ProgressChange或RunWorkerCompletet事件中更改UI。Vloxxity:我没有使用后台工作程序。我出现异常,在“使页面可见”处,例如:tespage.visible=true;我我今天晚上就我的技术问题与你见面,谢谢你:)