【发布时间】:2011-03-28 20:41:52
【问题描述】:
我有一个显示层次结构的 RadGrid。我想保存网格中每个项目的展开/折叠状态,以便当用户返回站点时,一切看起来都与他们离开时完全一样。我有代码来保存和恢复展开/折叠项目的状态,但是,我现在需要一种方法来检测当用户单击展开/折叠图标时哪个项目当前正在展开/折叠。我知道有一个命令事件,但是没有命令参数,也没有任何迹象表明正在更改哪个项目的状态。有什么想法吗?
【问题讨论】:
我有一个显示层次结构的 RadGrid。我想保存网格中每个项目的展开/折叠状态,以便当用户返回站点时,一切看起来都与他们离开时完全一样。我有代码来保存和恢复展开/折叠项目的状态,但是,我现在需要一种方法来检测当用户单击展开/折叠图标时哪个项目当前正在展开/折叠。我知道有一个命令事件,但是没有命令参数,也没有任何迹象表明正在更改哪个项目的状态。有什么想法吗?
【问题讨论】:
我发现传递给 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? :)
}
}
【讨论】:
使用持久性框架。 在我的帖子中: http://www.telerik.com/community/forums/wpf/persistence-framework/presistenceframework-not-save-groups.aspx#2248287 有示例如何做到这一点。
【讨论】: