2009-02-24 52 views
0

好吧,我有一个由GridView制作的表格,并附上了一个tablesorter,它工作得很好。有多个点击的jQuery tablesorter扩展问题?

然后我把它放在一个UpdatePanel内,并添加代码重新绑定一个回传,这里是我的脚本:

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的,整理作品。

  • 我点击一个按钮发布回来,它工作正常。
  • 我再次点击第一次点击可以对它进行排序,分类,但它会卡住 - 在那里 - 我可以更换列,但它永远不会被整理下来?但后来......
  • 我再次点击,它工作正常

这样下去的,工作每隔一个点击...任何想法?

回答

-1

你的问题听起来像一个服务器端问题 - 排序只能在该表被绑定在相同的请求后才起作用。否则,排序的事件挂接找不到任何东西。

当然 - 如果你已经绑定了表,它已经被排序 - 所以现在你必须重新获取数据。

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

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

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

这些类型的.Net页面事件模型的问题是MVC中有这么多兴趣的原因之一。

+0

我不认为你理解这个问题。它在回传后重新绑定。我没有任何服务器端排序打开,它是纯粹的客户端sop没有“所以现在你必须再次获得数据”。 – naspinski 2009-02-24 13:06:35