任何通过文本输入动态过滤GridView的方法
本文关键字:GridView 方法 过滤 动态 文本 输入 任何通 | 更新日期: 2023-09-27 18:26:03
获得了一个由C#支持的ASP.NET网站。这是一个内部页面,列出了我们的虚拟机所在的物理服务器。这个列表很长,所以我希望能够在用户输入文本框时过滤掉列表。例如,假设我们有三个名为"texas"、"newyork"answers"nevada"的服务器。如果用户在指定的文本框中键入字母"n",则列表将(最好是客户端,不回发)从列表中删除texas。此外,当用户输入"nev"时,newyork也会被过滤掉,只剩下"nevada"。
我认为默认GridView不存在这种功能。至少,我无论如何都找不到任何关于它的信息,不是为了一个网络表单
我能想到的另一种"好吧,我想它有效"的解决方案是,在文本输入时回发,将部分输入的字符串放入数据库,并根据返回的结果重新绑定表,因为它是一个内部网站,页面最多每周使用几次。因此,当我们输入"nev"时,我们已经进行了3次回发和3次数据库查询。我敢肯定,这很容易实现,而且由于这是一个完全的intranet网站,只有少数人使用基本的或没有安全需求,我不需要担心有人只是敲键盘,故意给服务器打十亿次电话。我意识到在一个真正的开放世界场景中,这是一个可怕的想法,但出于我们的需要,我不认为这是个问题。
我对任何能帮助我实现同样效果的解决方案都持开放态度,即使它不是GridView。
我刚刚在Rx(反应扩展)中遇到了一个这样做的例子。它使用.Sthrottle()来防止每次按键都发布。因此,您最多可以每秒或每隔一段时间进行一次更新。完整的例子是本PDF教程第18页的练习5,http://go.microsoft.com/fwlink/?LinkId=208528。(Rx主页)
在这里复制和粘贴太多了,但教程中有完整的示例。其要点是,每次按键都被处理为一个"序列"。然后,序列中的每个项目都由一个事件处理。在您的情况下,对每个更改执行的操作将是根据文本框的当前值过滤GridView(Throttle()将是防止快速打字者过于频繁地更新它的关键。
在这种情况下,我每次都会使用AJAX.NET来创建一个更流畅的UI。AJAX可以回发到服务器以获取新数据等,但不需要用户刷新整个页面。这将是理想的。这里有一些简单的AJAX.NET教程。只有几个ui控件,所以不需要太长时间就可以感受到它
编辑:如果使用ajax.net的迷你回发速度不够快,rx也可以使用客户端javascript。http://channel9.msdn.com/Blogs/Charles/Introducing-RxJS-Reactive-Extensions-for-JavaScript
你的备选方案听起来像是我的选择。Maby没有对每个更改进行查询,而是有一个小的刷新按钮来发送查询并刷新网格视图。如果它只是后端,我不认为这是一个问题。
对不起,我帮不了更多的忙。