Telerik RadGrid - 以编程方式修改FilterMenu中的文本

时间:2012-07-26 09:12:54

标签: c# asp.net telerik radgrid

我需要通过替换一些文本来修改radgrid的FilterMenu,例如“Order by”,“Contains”和“Does not contain”。

我尝试的解决方案是在菜单的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的网站上找不到任何详细的文档。

1 个答案:

答案 0 :(得分: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";
        }
    }
}