1

我使用 Telerik RadGrid 构建了一个网格。网格本身可以工作,但它是数据绑定到 SQL 数据库的。我正在尝试显示具有不同颜色的行。

这是我正在尝试做的一个例子:

在此处输入图像描述

这是我到目前为止所拥有的:

protected void SummaryGrid_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            GridItem dataItem = e.Item;
            if (dataItem["Red"].Text = "Red")
            {
                dataItem.BackColor = Color.Red;
            } 
        }
    }

对此的任何帮助都会很棒。

4

3 回答 3

1

Try the following code to change the color based on a particular value.

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
    { 

        if (e.Item is GridDataItem) 
        { 
         GridDataItem dataItem = e.Item; 
         if (dataItem["Size"].Text == "1") 
         { 
             dataItem.BackColor = Drawing.Color.Red; 
         } 
     } 
于 2013-10-28T04:49:13.930 回答
0

您可以使用样式触发器来完成此操作。

应用程序.xaml

<Style BasedOn="{StaticResource GridViewRowStyle}" TargetType="telerik:GridViewRow">
            <Style.Triggers>
                <DataTrigger Binding="{Binding YourObject.Size Converter={StaticResource ColorConverter}}" Value="Red">
                    <Setter Property="Background" Value="Red" />
                    <Setter Property="FontWeight" Value="Bold" />
                </DataTrigger>
                <DataTrigger Binding="{Binding YourObject.Size Converter={StaticResource ColorConverter}}" Value="Green">
                    <Setter Property="Background" Value="Green" />
                </DataTrigger>
            </Style.Triggers>
        </Style>

颜色转换器.cs

public class ColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is int)
        {
            if ((int)value > 100)
                return "Red";
            else
                return "Green";
        }
        else
            return "Default";
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // TODO: Implement this method
        throw new NotImplementedException();
    }
}
于 2013-10-27T16:19:17.140 回答
0

弄清楚了,实际上它真的很简单,只是说如果文本等于您需要的文本,那么它是一个红色行,或者如果它是其他东西,那么它是其他任何颜色。真的很容易,但是很多人都遇到过这个问题,所以希望这对其他人有帮助。

     if (e.Item is GridDataItem)
            {
                var item = (GridDataItem)e.Item;
                if (item["Type"].Text == "RedRow")
                {
                    item.BackColor = Color.Red;
                }
                else if(item["Type"].Text == "OrangeRow")
                {
                    item.BackColor = Color.Orange;
                }
              }
于 2013-10-29T23:45:59.313 回答