0

好的,我有一个表格,由 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,排序工作。

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

这继续,工作每隔一次点击......有什么想法吗?

4

1 回答 1

-1

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

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

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

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

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

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

于 2009-02-24T11:53:31.183 回答