ASP .Net的文本框TextChanged事件

5
我有一个网页,展示表中的记录,比如学生。我查询所有的学生并在网格中展示。我想使用文本框来过滤数据网格视图结果。例如,如果用户在文本框中输入"a",则网格将只显示名字中包含"a"的学生。我希望在编辑文本框时同时刷新网格。
我已经将文本框的autopostback属性设置为true,并在文本框的textchanged事件中刷新了网格。但是textchanged事件只有在文本框失去焦点后才会触发。如何让它在用户输入一个字符后触发?谢谢。

1
你应该使用AJAX,否则任何字符类型的后台事件都会触发post back,这不好。 - Thit Lwin Oo
1
你确定每次按键后都要引起页面回发吗?即使你将所有内容都包裹在更新面板中,用户仍然需要等待页面刷新才能输入下一个字符。 - rie819
这里有很多类似的问题:https://dev59.com/0HNA5IYBdhLWcg3wVcFx - Precious Roy
5个回答

3

抱歉,我没有提到我的控件已经在UpdatePanel中了。Textbox没有onKeyDown事件,我该如何实现它?谢谢。 - Ozgur Dogus
只需将其添加为文本,asp.net 将不会识别并将其直接添加到 HTML。 - Schiavini
然而,文本框不应该在更新面板内部,否则用户将无法正常输入。您应该从JavaScript更新updatePanel。 - Schiavini

2

如果您有特定的方法想要实现,您可能需要展示一些现有的代码。否则,您将会得到一些人告诉您他们会如何做。

目前它看起来是否像这样?

<asp:Textbox id="myTextbox" runat="server" onChange="txtChanged" AutoPostBack="true"/>

public void txtChanged(object sender, EventArgs e)
{
    //Get text from textbox
    string text = ((TextBox)sender).Text;

    //Do what ever it is you want to do to edit the text
    text = text.ToUpper();

    //Update the other textbox with this text
    txtMyText2.Text = text;
}

是的,我做了几乎相同的事情。另外,我还在我的文本框上使用了自动完成扩展器。谢谢。 - Ozgur Dogus
这可能是你的问题,我看到很多帖子都提到 AutoCompleteExtender 会抑制你的 TextChanged 事件 - Precious Roy
如果你有购买Telerik的资金,它通常是最好的选择,但它并不便宜。虽然设置不总是容易的,而且在某些复杂层面上也会失败。此外,还有其他免费项目可以使用漂亮的控件。 - Precious Roy
你用过它们吗?我对第三方控件的性能有所怀疑。 - Ozgur Dogus

1

TextChanged 事件只有在向服务器发送请求时才会触发。如果您想要在文本框内的文本更改时启动事件或函数,请使用 OnKeyDown 事件(与 Schiavini 右侧)。


1

好的,我想我会使用一个Rad控件来完成这个任务。Telerik的控件看起来更加整洁。JavaScript的解决方案对我来说似乎需要更多的工作,因为我将使用数据绑定等功能。我猜这将很难用JS实现。 - Ozgur Dogus
是的,使用Rad Controls非常整洁、易用且有文档支持。如果需要帮助,请联系我。 - Alex

0

您可以使用PicNet在客户端而不是服务器上执行此操作,以获得更好的用户体验。您可以在此处找到它http://www.picnet.com.au/resources/tablefilter/demo.htm请记住,GridView呈现为HTML表格,因此您可以自由地使用此jQuery插件。

祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接