有一个由C#支持的ASP.NET站点。它是一个内部页面,列出了我们的虚拟机所在的物理服务器。列表很长,所以我想要的是能够在用户键入文本框时过滤列表。例如,假设我们有三台名为“texas”,“newyork”和“nevada”的服务器。如果用户在指定的文本框中键入字母“n”,则列表将(最好是客户端,没有回发)从列表中删除德州。此外,当用户进入“nev”时,newyork也会被过滤掉,只留下“nevada”。
我不相信默认的GridView存在这种功能。至少,我无论如何也找不到任何关于它的东西,而不是网页形式。
我能想到的另一种“好吧我觉得它有用”的解决方案,因为它是一个内部网站,并且页面最多可能每周使用几次,就是回发文本输入,并抛出部分输入数据库的字符串,并根据返回的结果重新绑定表。因此,当我们输入“nev”时,我们已经进行了3次回发和3次数据库查询。我相当肯定这很容易实现,因为它是一个完全的内部网站点,基本到没有安全需求只供少数人使用,我不需要担心有人只是敲击键盘来故意尝试并拨打服务器十亿次。我意识到在一个真实的开放世界场景中这是一个可怕的想法,但是对于我们的需求,我认为这不是一个问题。
我愿意接受任何可以帮助我达到同样效果的解决方案,即使它不是GridView。
答案 0 :(得分:1)
我刚刚看到一个在Rx(Reactive Extensions)中执行此操作的示例。它使用.Throttle()来阻止它与每个按键发布。因此,您可以限制每秒更新或经常更新。完整的示例是本PDF教程http://go.microsoft.com/fwlink/?LinkId=208528中第18页的练习5。 (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
答案 1 :(得分:0)
你的交替声音就像去找我一样。 Maby而不是每次更改的查询都有一点刷新按钮来发送查询并刷新gridview。如果它只是后端我不认为这是一个问题。
对不起,我帮不了多忙。