2016-10-17 39 views
0

我有一个gsp表单,显示员工的详细列表(即员工姓名,职位,部门,状态)。所有这些列都是可排序的。在我的控制器类中调用特定操作后(即,将员工的状态从活动状态更改为非活动状态,反之亦然),分拣会受到干扰。我使用下面的代码,同时从DB在具体操作后保留排序 - Grails

String strSort = params.sort ?: "empId"; 
    strSort += " " 
    strSort += params.order?: "asc"; 

检索排序有没有什么办法可以留住这是有张贴“状态变化”行动之前,排序顺序?如果它是如何实现的?

+0

你必须让你的行动(控制器方法),否则将很难提出任何东西。 –

+0

状态如何改变?你打开一个屏幕或点击一些事件,然后通过jQuery(ajax)向控制器/控制器发送请求,然后执行某些操作,然后更新列表 - 然后结果是错误地命令。或者,你是否将更新的状态物理地发布到控制器操作,然后使用列表刷新页面? – Vahid

+0

@vahid我点击状态图标,它通过ajax向控制器发送请求,并将更新后的状态发送回emp列表。但是在此操作之后,先前的排序顺序被distrubed – SK01

回答

0

我能想到的两种方法可以做到这一点:

  • 您通过排序和顺序参数到你的动作,并用结果把他们送回 。

  • 每次更新它们时都会存储两个参数。

,以存储和会话使用这样的事情retrive:

private DEFAULT_SORT = 'myDefaultSort' 

def myAction() { 
    if (params.sort && params.sort != session.getAttribute('sort-' + actionName)) { 
     session.setAttribute('sort-' + actionName, params.sort) 
    } 
    params.sort = session.getAttribute('sort-' + actionName)?:DEFAULT_SORT 
    ... 
    //Your existing logic 
} 

如果你收到一个新的/不同的排序参数保存成会话。然后你尝试从会话中加载现有的参数,如果你没有存储任何值,你会得到一个默认值。

+0

您能否告诉我如何获取当前会话的排序和顺序参数并将其传递给我的控制器? – SK01

+0

@AnithaKamatchi我更新了我的答案。 – rvargas

+0

@AnithaKamatchi看看这个答案,正是你需要的http://stackoverflow.com/a/40151111/3897206 – rvargas

0

正如rvargas所建议的那样,可以通过多种方法。 queuekit plugin尚未正确释放,因此您可以根据您正在使用的是哪个克隆grails 3/grails2分支,并且还可以克隆测试站点以便与其混淆在插件中混淆此概念:

In总之,您需要登录separate out your search feature,您可以通过会话值或通过子集列表迭代发送。

我决定不使用会话。然后当我点击删除该bean is bound back in with the request sent(这是要删除的ID)

在快结束它relists所以没有必要做任何其他的位置:

最重要的一点是,当我叫AJAX reloadPage或甚至进一步postAction使用delete函数是我serialize search form。实际的搜索对象保存在tidy manner here

但是,如果这太复杂,那么在非常控制器链接中会话搜索被注释掉了。我认为你可以启用这个功能,忘记所有这些复杂功能,并拥有一个searchAgain()功能,它可以像在我的控制器中显示xhr一样呈现_list模板,而不是绑定bean,而是绑定session.search地图,这条路线,你可能想改变from g:render to g:include action="searchAgain"

希望帮助你更好地理解