我有一个网页。我在我的页面中显示表格中的记录,比如说,学生。我查询所有学生并在网格中显示他们。我想使用一个文本框来过滤 datagridview 结果。例如,如果用户在文本框中键入 a,则网格将仅显示他/她的名字中有“a”的学生。我想在编辑文本框的同时刷新网格。
我已将文本框的 autopostback 属性设置为 true,并在文本框的 textchanged 事件中刷新网格。但 textchanged 事件仅在文本框失去焦点后触发。用户仅输入一个字符后如何使其触发?谢谢。
我有一个网页。我在我的页面中显示表格中的记录,比如说,学生。我查询所有学生并在网格中显示他们。我想使用一个文本框来过滤 datagridview 结果。例如,如果用户在文本框中键入 a,则网格将仅显示他/她的名字中有“a”的学生。我想在编辑文本框的同时刷新网格。
我已将文本框的 autopostback 属性设置为 true,并在文本框的 textchanged 事件中刷新网格。但 textchanged 事件仅在文本框失去焦点后触发。用户仅输入一个字符后如何使其触发?谢谢。
您必须使用 onKeyDown 事件。但是,我建议您使用 ASP.NET AJAX 或 jQuery 来通过 Ajax 加载结果。
这是 asp.net 的一个示例:http ://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/AutoComplete/AutoComplete.aspx
另一个,来自代码项目: http: //www.codeproject.com/Articles/38803/Google-Like-Search-TextBox
如果您想为此使用特定方法,您可能想显示一些您当前的代码。否则你会让人们告诉你他们会怎么做。
它现在看起来像这样吗?
<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;
}
我认为最好和最干净的方法是使用 Rad Controls,这里有一个如何做到这一点的例子:http: //demos.telerik.com/aspnet-ajax/controls/examples/integration/gridandcombo/defaultcs.aspx?产品=网格
该事件TextChanged
仅在您向服务器发送请求时触发。如果您想在文本框内的文本更改时启动事件或创建函数,请使用OnKeyDown
事件(与 Schiavini 一样)。
您可以使用 PicNet 在客户端而不是服务器中执行此操作,以获得更好的用户体验。您可以在此处找到它http://www.picnet.com.au/resources/tablefilter/demo.htm请记住,Gridview 呈现为 HTML 表格,因此您可以自由使用这个 jQuery 插件。
祝你好运!