使用tableSorter的2.0.5版本和tablesorterPager插件。我正在使用ajax加载表行(使用文档中的初始配置,对ajax URL进行微小更改以满足我的需求)。一切都很好。
我想做的是将tablesorterPager的过滤函数与其他HTML控件集成。具体来说,我的应用程序处理工单。订单的状态可以是"打开"或"关闭"。我想使用一个单选按钮集(或选择,或其他),允许用户在"打开、关闭、任意"之间进行选择,并在进行选择时刷新页面,我想保留用户在表格显示中所做的任何过滤/排序。
例如,假设用户在其中一个表列的筛选框中键入世界"foo",并选择按日期排序。就本例而言,假设状态控件设置为"任意"。用户决定将结果限制为"打开"项目。当他点击更改控件时,我希望插件发出ajax请求,并包括"foo"过滤器(来自表列上的过滤器框)和状态控件上的选择(即"打开"),并保留用户已经选择的排序选项。
有人能为我指明正确的方向吗?如何操作/更新ajax URL以包括其他控件中的过滤器选择?或者还有其他技术可以做到这一点吗?
谢谢,Don
有一个演示展示了如何使用带有自定义寻呼机控件的寻呼机。事实上,这个SO答案展示了如何将寻呼机与另一个第三方分页插件一起使用。
至于向url添加更多信息,您可以修改传递给jQuery $.ajax
调用(ref)的ajaxObject
:
ajaxObject: {
// add ajax settings here
dataType: 'json',
data: {
'Status' : 'all'
}
},
或者,使用customAjaxUrl
回调函数修改URL。
// modify the url after all processing has been applied
customAjaxUrl: function(table, url) {
return url += '&Status=all';
}
感谢Mottie的帮助。根据你的建议,以下是我为解决问题所做的工作。
非常简单:分类器的customAjaxUrl回调函数可以向AjaxUrl添加任何您想要的内容,包括页面上控件的值。
例如,我有一个名为CustomerID的输入。我希望这个值包括
customAjaxUrl: function (table, url) {
// manipulate the url string as you desire
// url += '&currPage=' + window.location.pathname;
// Append "CustomerID=" to the query string,
// and use '$("#CustomerID").val()' to obtain
// the value of the CustomerID selection.
url += '&CustomerID=' + $("#CustomerID").val();
// trigger a custom event; if you want
$(table).trigger('changingUrl', url);
// send the server the current page
return url;
我可以向查询字符串中添加其他项,从其他控件中读取值。
请注意,您可能希望触发表的更新。例如,在我的项目中,用户有一个复选框控件,用于确定是否包括特定状态的票证。选中后,我希望刷新表,同时保留所有现有的筛选器和排序。
您可以使用寻呼机插件的pagerUpdate方法来完成此操作。我把触发器放在一个函数中,这样它就可以被调用为多个控件的onclick/onchange事件处理程序:
function doTableReresh(){
$("#mytable").trigger("pagerUpdate");
}