【问题标题】:jQuery tablesorter extension problem with multiple clicks?多次点击的jQuery tablesorter扩展问题?
【发布时间】:2009-02-24 08:57:00
【问题描述】:

好的,我有一个表格,由 GridView 制作,并附加了一个表格排序器,它工作得很好。

然后我将它放在更新面板中,并添加代码以在回发时重新绑定它,这是我的脚本:

function loadEvents() { $("table[id$='gv']").tablesorter(); }
$(document).ready(function() { loadEvents(); });
function reBind() {
    if (Sys.WebForms.PageRequestManager) {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(function() { loadEvents(); });
    }
}

效果很好,我加载了gridview,排序工作。

  • 我点击一个发回的按钮,它工作正常。
  • 我再次单击,第一次单击可以进行排序,将其排序,但它卡住了 - 在那里 - 我可以更改列,但它永远不会排序?但后来...
  • 我再次点击,效果很好

继续进行,每隔一次点击...有什么想法吗?

【问题讨论】:

    标签: asp.net jquery asp.net-ajax jquery-plugins tablesorter


    【解决方案1】:

    您的问题听起来像是服务器端问题 - 排序仅在表绑定到同一请求中后才有效。否则排序的事件连接找不到任何东西。

    当然——如果你已经绑定了表格,那么它已经被排序了——所以现在你必须再次获取数据。

    这类问题是可怕的 .Net 页面事件模型的常见问题。

    最简单的解决方法是确保在加载视图状态后但在事件触发之前,您的表在 ajax 回发中被反弹,然后在事件触发后再次获取数据。问题是你得到了两次数据。

    更好的解决方法是避免在任何动态页面元素中使用 .Net 的事件挂钩。

    .Net 页面事件模型的这些类型问题是人们对 MVC 如此感兴趣的部分原因。

    【讨论】:

    • 我认为您没有理解这个问题。它在回发后重新绑定。我没有打开任何服务器端排序,它纯粹是客户端所以没有“所以现在你必须再次获取数据”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2012-04-20
    • 2016-07-18
    • 2010-12-25
    相关资源
    最近更新 更多