【急】根据TextBox录入值的不同,实时查询,更新GridView中的数据
小弟最经在做一个简单应用,中间遇到一个常见的问题:
根据客户在TextBox录入值的不同,实时查询,更新GridView中的数据
也就是在TextBox中,
用户输入:23,就按23%模糊查询;
用户输入:23324,就按23324%模糊查询;
应该是比较常见的问题,大家一定遇到过,希望大家可以指点一下!
分不够可以再加,小弟对.Net不是太清楚,诚心求救!
[解决办法]
可以在文本框的onchange事件里面判断是否输入值发生改变,改变了就查询。lz可以把情况说的详细点
[解决办法]
TextBox有个onchanged事件
TextBox的autopostback设置true
[解决办法]
把你查询的代码写到TextBox的onchanged事件就O了
[解决办法]
textBox失去焦点的时候做查询,重新绑定gridview,这种好像不能使用gridview了~~~加个服务器按钮吧,点击就做查询,直接后台绑定了。
如果有默认条件需加上,条件存入viewstate或session中来拼吧。
[解决办法]
看到好多勋章
利用textbox的自动post事件吧
[解决办法]
把你查询的代码写到TextBox的onchanged事件 并且设置TextBox的AutoPostBack为True,但是这样有个问题,就是说每当你输入一个字符时都会触发一次查询...这样的客户体验似乎不太好...
[解决办法]
onchange就去查数据库,不过会有回传,网页慢的话会跳一下,唉
[解决办法]
像百度搜索的时候那种效果吧?
[解决办法]
给TextBox加一个更改事件
[解决办法]
http://www.blogjava.net/sealyu/archive/2009/04/16/265940.html
这里面应该有你想要的效果的jqery插件,看一下行不行吧。
[解决办法]
实时查询,,,若数据比较多,会很麻烦!!!!
不建议使用。。。。
可以用 鼠标事件 onkeypress 事件
点击触发,输入完一个字再次出发(每输入一个字都会触发)
[解决办法]
ajax中有个空间有这个功能
[解决办法]
lz可以在文本框获得焦点的时候启动setInterval,在然后设置时间多少秒查询一次,在文本框失去焦点的时候clearInterval就可以了。差不多就这个意思。
[解决办法]
你可以去找下这个控件AutoCompleteExtender
[解决办法]
不用设置多少秒查询,和时间无关系,
只是根据输入文本中数据库中模糊查询。而且不能根据秒来看文本的值是不是有改变。
用户要的是我只要一输入你就要给我查,谁还等你多少秒啊。
[解决办法]
自己做百度搜下autocompleteextender这个空间,装上直接设置属性就OK了。
[解决办法]
onkeyup事件中判断
[解决办法]
private void currencyTextBox_TextChanged(object sender, EventArgs e){ try { if(double.Parse(currencyTextBox.Text) < 0) { ... } else { ... } } catch { }}
[解决办法]
//首先实现数据绑定到dataGridView。 DataTable m_dt = new DataTable(); /// <summary> /// 获取数据信息 /// </summary> private void GetDataGridinfor() { try { m_dt = Infor.GetDataGridViewInf(); this.m_dt.DefaultView.RowFilter = "";//此行不能放在下一行datasource之后,放了会出现ID列 this.dataGridView1.DataSource = m_dt; } catch { } }//再用TextChanged事件. private void TextBox1_TextChanged(object sender, EventArgs e) { try { this.m_dt.DefaultView.RowFilter = string.Format("所属部门 Like '%{0}%' Or 工作职务 Like '%{0}%' Or 用户权限 Like '%{0}%'", this.toolStripTextBoxDepartment.Text.Trim()); } catch { } }//这种效果能够实现。
[解决办法]
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewFilter.aspx.cs" Inherits="GridViewFilter" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head id="Head1" runat="server"> <title>Live GridView Filter</title> <style type="text/css"> .highlight { background-color: yellow; } .updateProgressPanel { position: absolute; width: 200px; left: 30%; top: 200px; background-color: #fff; border: solid 1px #00008B; text-align: left; vertical-align: middle; padding-top: 16px; padding: 5px; } </style> </head><body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <div> Filter selected column: <asp:TextBox ID="FilterText" runat="server" OnTextChanged="FilterText_TextChanged" /> </div> <asp:UpdateProgress ID="UpdateProgress1" runat="server"> <ProgressTemplate> <div class="updateProgressPanel"> <img src="images/gears_an.gif" alt="Loading" /> <b>Loading ..</b> </div> </ProgressTemplate> </asp:UpdateProgress> <p> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" EmptyDataText="There are no data records to display." CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDataBound="GridView1_RowDataBound" OnPageIndexChanged="GridView1_PageIndexChanged" OnSorted="GridView1_Sorted"> <Columns> <asp:BoundField DataField="ContactID" HeaderText="ContactID" SortExpression="ContactID" /> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> <asp:BoundField DataField="MiddleName" HeaderText="MiddleName" SortExpression="MiddleName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> <asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress" SortExpression="EmailAddress" /> <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" /> </Columns> <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#E3EAEB" /> <EditRowStyle BackColor="#7C6F57" /> <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" /> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString1 %>" SelectCommand="SELECT [ContactID], [Title], [FirstName], [MiddleName], [LastName], [Suffix], [EmailAddress], [Phone] FROM [Person].[Contact]"> </asp:SqlDataSource> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="FilterText" EventName="TextChanged" /> </Triggers> </asp:UpdatePanel> </p> </div> </form> <script type="text/javascript"> Sys.Application.add_load(page_load); Sys.Application.add_unload(page_unload); function page_load(){ $addHandler($get('FilterText'), 'keydown', onFilterTextChanged); } function page_unload(){ $removeHandler($get('FilterText'), 'keydown', onFilterTextChanged); } var timeoutID = 0; function onFilterTextChanged(e){ // Clear any delays if (timeoutID){ window.clearTimeout(timeoutID); } // Executes a code snippet or a function after specified delay timeoutID = window.setTimeout(updateFilterText, 1000); } function updateFilterText(){ __doPostBack('FilterText', ''); } </script> </body></html>using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Text;public partial class GridViewFilter : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) GridView1.Sort("FirstName", SortDirection.Ascending); } protected void FilterText_TextChanged(object sender, EventArgs e) { UpdateFilter(); System.Threading.Thread.Sleep(2000); } protected void GridView1_Sorted(object sender, EventArgs e) { UpdateFilter(); } protected void GridView1_PageIndexChanged(object sender, EventArgs e) { UpdateFilter(); } protected void Filter_Click(object sender, EventArgs e) { UpdateFilter(); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType != DataControlRowType.DataRow) return; if (String.IsNullOrEmpty(SqlDataSource1.FilterExpression)) return; // Lookup the column index int colIndex = GetColumnIndex(GridView1.SortExpression); TableCell cell = e.Row.Cells[colIndex]; string cellText = cell.Text; int leftIndex = cellText.IndexOf(FilterText.Text, StringComparison.OrdinalIgnoreCase); int rightIndex = leftIndex + FilterText.Text.Length; StringBuilder builder = new StringBuilder(); builder.Append(cellText, 0, leftIndex); builder.Append("<span class=\"highlight\">"); builder.Append(cellText, leftIndex, rightIndex - leftIndex); builder.Append("</span>"); builder.Append(cellText, rightIndex, cellText.Length - rightIndex); cell.Text = builder.ToString(); } private void UpdateFilter() { string filterExpression = null; if (!String.IsNullOrEmpty(FilterText.Text)) filterExpression = string.Format("[{0}] LIKE '%{1}%'", GridView1.SortExpression, FilterText.Text); SqlDataSource1.FilterExpression = filterExpression; } private int GetColumnIndex(string columnName) { for (int i = 0; i < GridView1.Columns.Count; i++) { BoundField field = GridView1.Columns[i] as BoundField; if (field != null && field.DataField == columnName) return i; } return -1; }}
[解决办法]
给你一个代码。很简单
http://dotnet.aspx.cc/article/d94323a7-e322-4ead-9f25-6e6629c8012e/read.aspx