我有一个包含许多列的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()不稳定,我该如何解决此问题?
答案 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;
。