繁体   English   中英

使用AJAX重新绑定gridview(无回发)

[英]Rebind gridview using AJAX (without post back)

我计划允许用户打开包含带有“筛选器”文本框的gridview的modalpopupextender。 我想要这样,当用户键入过滤器时,将过滤器应用于gridview,然后更新gridview的内容以反映所应用的过滤器-所有这些都无需回发。 同样理想的是,gridview将在用户键入时进行过滤,而不必按下按钮。

我猜想它将在我的SqlDataSource和一个UpdatePanel上使用FilterParameters,但是谁能提供关于我将如何执行此操作的更详尽的解释? 如果我使用的代码是“通用”的并且可以与任何其他GridView和DataSource一起使用,那也很好。

谢谢

您不能将gridview包装在一个updatepanel中,然后在文本框上进行更改,然后将数据源与过滤器重新绑定吗?

将gridview放在UpdatePanel中,并将TextBox放在它外面。 将一个隐藏按钮添加到该面板(它是一个异步触发器),然后将javascript onchange添加到文本框中以单击该按钮。

  <asp:Button ID="DoRefresh" style="display:none;" UseSubmitBehavior="false"
 runat="server" OnClick="Recalculate()" />

在Page_Init中:

    myTextBox.Attributes.Add("onChange",
"document.getElementById('" + DoRefresh.ClientID + "').click()");

将重新绑定的代码放在Recalculate()中

那应该做。 我确信有更好的方法可以做到这一点,但是如果您想使用诸如GridView之类的服务器端控件,我认为您只能使用部分回发来更新它。 但是要小心,您确定每次输入字母时都要运行查询吗?

编辑-让我补充说,我认为使用jQuery插件或其他一些带有ajax的客户端解决方案,正如另一个答案所暗示的那样,比这样做更有意义。 这实际上不是UpdatePanels的目的,并且每次他们键入字母时,您都将进行回发(尽管是部分回发)。 但是回发是告诉服务器端代码更新页面的唯一方法。

每次用户键入字母时,您都要去服务器并运行查询。 那会很快变得昂贵。 您是否正在使用jQuery之类的JavaScript框架? 大多数框架都有一个数据<table> ,该数据<table>具有这种功能,该<table>包装在<table>标记周围。

谷歌快速搜索找到了jQuery: http : //www.datatables.net/ (还有很多其他的东西,dojo和yui也有它们自己的)

您可以执行以下操作:

$(document).ready(function(){
  $('#<% = GridView1.ClientID%>').dataTable();
});

请注意,根据数据集的大小,此解决方案也有其缺点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM