Telerik radgridview CellFormatting不稳定

时间:2019-03-24 18:27:38

标签: c# winforms telerik radgridview

我有一个包含许多列的radgridview(水平滚动条已激活)。
我的网格中有一个CommandColumn,我想像这样格式化它:

private void rad_grd_Requests_CellFormatting(object sender, CellFormattingEventArgs e)
    {
        if (e.CellElement.ColumnInfo is GridViewCommandColumn)
        {
            RadButtonElement button = (RadButtonElement)e.CellElement.Children[0];
            if (e.CellElement.RowInfo.Cells["Admin_Action"].Value.ToString() == "Hold")
            {
                button.Text = "Done";
            }
            else
            {
                button.Text = "Done";
                button.Visibility = ElementVisibility.Hidden;
            }
        }
    }

程序启动时一切正常。
但是当我有时使用网格的水平滚动条时,CommandColumn中的所有按钮都是不可见的。(多次运行CellFormatting())
为什么CellFormatting()不稳定,我该如何解决此问题?

2 个答案:

答案 0 :(得分:1)

由于RadGridView中的UI虚拟化,仅为当前可见的单元创建了单元元素,并且在滚动,过滤,分组等操作中可以重复使用这些单元元素。为了防止将格式应用于其他列的单元格元素(由于单元格的重用),应为其余单元格元素重置所有自定义设置。

请参考以下帮助文章,该文章说明如何正确自定义单元格并重置样式:https://docs.telerik.com/devtools/winforms/controls/gridview/cells/formatting-cells

希望此信息对您有所帮助。

答案 1 :(得分:0)

这是答案:

   RadButtonElement button = (RadButtonElement)e.CellElement.Children[0];
    if (e.CellElement.RowInfo.Cells["Admin_Action"].Value.ToString() == "Hold")
    {
        button.Text = "Done";
        button.Visibility = ElementVisibility.Visible;
    }
    else
    {
        button.Text = "Done";
        button.Visibility = ElementVisibility.Hidden;
    }

在您的代码中添加button.Visibility = ElementVisibility.Visible;