2

我需要通过替换一些文本来修改 radgrid 的 FilterMenu,例如“排序依据”、“包含”和“不包含”。

我尝试的解决方案是将事件处理程序添加到菜单的 ItemCreated 事件

grid.FilterMenu.ItemCreated += new RadMenuEventHandler(FilterMenu_ItemCreated);

然后当 ItemCreated 事件被触发时,我的方法应该简单地通过 e.Item.Text 对象查找一些字符串,并替换它们。

void FilterMenu_ItemCreated(object sender, RadMenuEventArgs e)
        {
            if (e.Item.Text == "Group By") e.Item.Text = "Custom text";
        }

但是 FilterMenu_ItemCreated 方法完全可以触发。我对为什么感到困惑,因为我之前在修改 HeaderContextMenu 中的文本时使用了相同的方法 - 而且效果很好。例子:

radgrid.HeaderContextMenu.ItemCreated += 
new RadMenuEventHandler(HeaderContextMenu_ItemCreated); 

...

 void HeaderContextMenu_ItemCreated(object sender, RadMenuEventArgs e)
        {
if (e.Item.Text == "Order By") e.Item.Text = "Custom text";
}

所以这种方法适用于 HeaderContextMenu,但不适用于 FilterMenu。两个事件处理程序在代码中一个接一个地添加,但只有一个有效。任何想法为什么?难道 RadMenuEventHandler 不是 FilterMenu.ItemCreated 的正确类型的 EventHandler 吗?在 Telerik 的网站上找不到任何详细的文档。

4

1 回答 1

2

请检查下面的代码片段。

 protected void Page_Load(object sender, EventArgs e)
{
    GridFilterMenu menu = RadGrid1.FilterMenu;
    foreach (RadMenuItem item in menu.Items)
    {   
        if (item.Text == "StartsWith")
        {
            item.Text = "Your new text";
        }
    }
}
于 2012-07-26T09:36:40.673 回答