如何使用DataView在SlickGrid上注册onCollapse
和onExpand
个事件?
我需要跟踪组的状态 - 这些组已展开,哪些已折叠。
答案 0 :(得分:3)
简而言之:你做不到。 SlickGrid
对象中没有此类事件,DataView
也没有。
长期:
第一种方法:
网格有一个onClick
方法,您可以订阅。但是,订阅此事件仅适用于单元或行点击,甚至适用于组行,但不适用于单击展开或折叠时。此事件不会传播到您可以在组行上单击的 - 或 + span
元素。< / p>
第二种方法
DataView有一个on onRowsChanged
事件,您也可以订阅它。例如,您可以尝试从JS调试器控制台执行以下操作:dataView.onRowsChanged.subscribe(function(e, args) {console.log(args.rows);});
使用此事件看起来我们距离更近了一步,因为展开/折叠按钮单击会引发它。但是,我们在匿名函数中收到的args
参数仅包含有关需要在网格画布上更新的行的信息。
最后的机会(也就是说,不要在家里尝试这些或 hackish方法) 我已经尝试了所有可能的方法来解决这个问题,但没有成功。我将在下面列出这些作为参考(从SlickGrid v2.2开始)。
$('.slick-group').click(function(){console.log()});
$('.slick-group-toggle').click(function(){console.log()});
上面列出的尝试仅适用于第一次展开或折叠,因为在操作之后,它们将分离并附加到DOM和网格画布(如果它们适合)(基于DataView.onRowsChanged
事件{{1我在上面提到的参数 2。。)
答案 1 :(得分:1)
对于那些仍在寻找解决方案的人,这是我实施的方法。
展开时,我必须在组行中隐藏一些内容,因此我需要直接在组行上具有折叠/展开的类。
为此,我使用了@using (Html.BeginForm("FindResults", "COntrollerName", FormMethod.Get, new { id = "SearchForm" }))
{}
public ActionResult Index()
{
return view();
}
[HttpGet]
public ActionResult FindResults(FindIssueModel model)
{
}
:
dataView.getItemMetadata
答案 2 :(得分:0)
我知道这确实很老,但只是以为我会分享我的解决方案。可以访问单击事件以扩展或折叠组!
我的解决方案非常简单。您需要覆盖/%category%/%postname%/
中设置的handleGridClickEvent
。
所以要这样做。.在注册GroupItemMetadataProvider
插件之后,立即像这样调用groupItemMetadataProvider
取消订阅默认destroy()
。
handleGridClickEvent
然后,您可以简单地从this.grid.registerPlugin(groupItemMetadataProvider);
// unsubscribes the default click event handler for grouped rows so we can provide our own which will save the state of the expanders
groupItemMetadataProvider.destroy();
中复制函数,并添加所需的任何其他功能。
GroupItemMetadataProvider
在您的函数中..要确保单击了expander元素,您可以查看事件的CSS类
// On expander click event. This is attached to the grid.onClick but checks for the expander css class
// The function has been taken from slick.groupitemmetadataprovider.js (handleGridClick) and modified to save the expander states
// to local storage.
function onExpanderClick(e, args) {
...
}
您可以使用$(e.target).hasClass('slick-group-toggle')
查看扩展器的状态,并根据扩展器的状态添加所需的任何功能。
最后将您的新功能作为网格onClick事件之一进行订阅。
item.collapsed