在SlickGrid中展开和折叠事件

时间:2015-11-25 06:01:36

标签: jquery slickgrid

如何使用DataView在SlickGrid上注册onCollapseonExpand个事件?

我需要跟踪组的状态 - 这些组已展开,哪些已折叠。

3 个答案:

答案 0 :(得分:3)

简而言之:你做不到。 SlickGrid对象中没有此类事件,DataView也没有。

长期:

  1. 第一种方法: 网格有一个onClick方法,您可以订阅。但是,订阅此事件仅适用于单元点击,甚至适用于组行,但不适用于单击展开或折叠时。此事件不会传播到您可以在组行上单击的 - + span元素。< / p>

  2. 第二种方法 DataView有一个on onRowsChanged事件,您也可以订阅它。例如,您可以尝试从JS调试器控制台执行以下操作:dataView.onRowsChanged.subscribe(function(e, args) {console.log(args.rows);}); 使用此事件看起来我们距离更近了一步,因为展开/折叠按钮单击会引发它。但是,我们在匿名函数中收到的args参数仅包含有关需要在网格画布上更新的的信息。

    < / LI>
  3. 最后的机会(也就是说,不要在家里尝试这些或 hackish方法 我已经尝试了所有可能的方法来解决这个问题,但没有成功。我将在下面列出这些作为参考(从SlickGrid v2.2开始)。

    • $('.slick-group').click(function(){console.log()});
    • $('.slick-group-toggle').click(function(){console.log()});
  4. 上面列出的尝试仅适用于第一次展开或折叠,因为在操作之后,它们将分离并附加到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