c# - 有什么方法可以通过文本输入即时过滤 GridView 吗?

标签 c# asp.net gridview input filter

获得一个由 C# 支持的 ASP.NET 站点。这是一个内部页面,列出了我们的虚拟机所在的物理服务器。该列表很长,所以我想要的是能够在用户键入文本框时过滤列表。例如,假设我们有三个名为“texas”、“newyork”和“nevada”的服务器。如果用户在指定的文本框中键入字母“n”,则列表(最好是客户端,没有回发)将从列表中删除 texas。此外,当用户输入“nev”时,newyork 也被过滤掉,只剩下“nevada”。

我认为默认的 GridView 不存在这种功能。至少,无论如何我找不到任何关于它的信息,不是网络表单。

我能想到的另一种“嗯,我想它行得通”的解决方案,因为它是一个内部站点,并且该页面最多可能每周使用几次,是在文本输入时回发,然后抛出针对数据库部分输入的字符串,并根据返回的结果重新绑定(bind)表。因此,当我们输入“nev”时,我们已经进行了 3 次回发和 3 次数据库查询。我相当确定这很容易实现,并且由于它是一个完全内部网站,具有基本的甚至没有安全需求,只有少数人使用,我不需要担心有人只是敲击键盘故意尝试并调用服务器十亿次。我意识到这在真实的开放世界场景中是一个可怕的想法,但对于我们的需求,我认为这不是问题。

我愿意接受任何一种可以帮助我实现相同效果的解决方案,即使它不是 GridView。

最佳答案

我刚刚在 Rx(响应式扩展)中看到一个这样做的例子。它使用 .Throttle() 来防止它在每次按键时发布。因此,您最多可以限制每秒更新一次或经常更新一次。完整示例是本 PDF 教程第 18 页的练习 5,http://go.microsoft.com/fwlink/?LinkId=208528 . ( Rx home page )

这里复制和粘贴太多了,但是教程有完整的例子。它的要点是每个按键都被处理为一个“序列”。然后序列中的每个项目都由一个事件处理。在您的情况下,对每次更改执行的操作将根据文本框的当前值过滤 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

关于c# - 有什么方法可以通过文本输入即时过滤 GridView 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495299/

相关文章:

c# - 在 C# 应用程序中获取 Transact SQL 查询结果

c# - LookupAccountSid 每次调用花费 +600 毫秒

c# - 划掉文字文本

asp.net - 创建所需的 URL - 我应该循环吗?

c# - 如何在 gridview 的右侧而不是在 asp.net 的左侧显示编辑和删除按钮?

c# - 从异步方法立即抛出

c# - 实体的 MVC 模型设计

c# - 将一个 child 附加到网格,设置它的行和列

c# - 使用 asp.net 使用下一个、上一个按钮和显示总页数的分页 gridview

c# - 安全与不安全代码