我有一个显示分层结构的RadGrid。我想保存网格中每个项目的展开/折叠状态,以便当用户返回到网站时,所有内容看起来都与它们离开时完全一样。我有代码来保存和恢复展开/折叠项目的状态,但是,我现在需要一种方法来检测当用户单击展开/折叠图标时当前正在展开/折叠的项目。我知道有一个命令事件,但是没有命令参数,也没有任何迹象表明哪个项目的状态正在被更改。有什么想法吗?
答案 0 :(得分:4)
我发现传递给RadGrid.ItemCommand事件的GridCommandEventArgs包含一个'Item'属性,该属性表示已展开/折叠的项目。如果转换为GridDataItem,则可以检索数据键并执行必要的操作。
protected void RadGrid_OnItemCommand(object sender, GridCommandEventArgs e)
{
try
{
if(e.CommandName.Equals("ExpandCollapse"))
{
string id = ((GridDataItem)e.Item).GetDataKeyValue("ID").ToString();
// ... do work on id (i.e. save state, etc.) ...
}
} catch(Exception ex)
{
// What could possibly go wrong? :)
}
}
答案 1 :(得分:0)
使用持久性框架。 在我的帖子中: http://www.telerik.com/community/forums/wpf/persistence-framework/presistenceframework-not-save-groups.aspx#2248287 有一些例子如何做到这一点。