我计划允许用户打开包含带有Filter文本框的gridview的modalpopupextender。我想要它,所以当用户键入过滤器时,过滤器将应用于gridview,然后更新gridview的内容以反映应用的过滤器 - 所有这些都不会回发。理想情况下,gridview将在用户输入时进行过滤,而不必按下按钮。
我猜它会在我的SqlDataSource和UpdatePanel上使用FilterParameters,但任何人都可以提供更详尽的解释我将如何做到这一点?如果我使用的代码是“通用”并且可以与任何其他GridView和DataSource一起使用,那也很好。
由于
答案 0 :(得分:2)
你不能将gridview包装在updatepanel中,然后在textbox上用过滤器重新绑定数据源吗?
答案 1 :(得分:1)
将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的用途,每次键入一个字母时,您都会进行回发(尽管是部分的)。但是回发是告诉服务器端代码更新页面的唯一方法。
答案 2 :(得分:1)
每次用户键入字母时,您都会访问服务器并运行查询。这可以快速实现昂贵。你在使用像jQuery这样的javascript框架吗?大多数框架都有一个数据表,它包含<table>
标记,具有这种功能。
快速谷歌搜索为jQuery找到了这个:http://www.datatables.net/ (还有其他一些,dojo和yui也有自己的)
您可以执行以下操作:
$(document).ready(function(){
$('#<% = GridView1.ClientID%>').dataTable();
});
请注意,此解决方案也存在缺陷,具体取决于数据集的大小。