Telerik radgridview CellFormatting 不稳定
Telerik radgridview CellFormatting is not stable
我有一个包含很多列的 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() 不稳定,我该如何解决这个问题?
由于 RadGridView 中的 UI 虚拟化,单元格元素仅为当前可见的单元格创建,并在滚动、过滤、分组等操作期间重复使用。为了防止将格式应用于其他列的单元格元素(因为单元格重用),应为其余单元格元素重置所有自定义。
请参考以下帮助文章,演示如何正确自定义单元格和重置样式:https://docs.telerik.com/devtools/winforms/controls/gridview/cells/formatting-cells
希望这些信息对您有所帮助。
答案如下:
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;
添加到您的代码中。
我有一个包含很多列的 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() 不稳定,我该如何解决这个问题?
由于 RadGridView 中的 UI 虚拟化,单元格元素仅为当前可见的单元格创建,并在滚动、过滤、分组等操作期间重复使用。为了防止将格式应用于其他列的单元格元素(因为单元格重用),应为其余单元格元素重置所有自定义。
请参考以下帮助文章,演示如何正确自定义单元格和重置样式:https://docs.telerik.com/devtools/winforms/controls/gridview/cells/formatting-cells
希望这些信息对您有所帮助。
答案如下:
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;
添加到您的代码中。