首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

根据TextBox录入值的不同,实时查询,更新GridView中的数据

2012-04-12 
【急】根据TextBox录入值的不同,实时查询,更新GridView中的数据小弟最经在做一个简单应用,中间遇到一个常见

【急】根据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事件中判断
[解决办法]

C# code
private void currencyTextBox_TextChanged(object sender, EventArgs e){   try   {           if(double.Parse(currencyTextBox.Text) < 0)      {         ...      }      else      {         ...      }   }   catch   {        }}
[解决办法]
C# code
//首先实现数据绑定到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 { }        }//这种效果能够实现。 


[解决办法]

探讨
C# code//首先实现数据绑定到dataGridView。 DataTable m_dt=new DataTable();///<summary>/// 获取数据信息///</summary>privatevoid GetDataGridinfor()
{try
{
m_dt= Infor.GetDataGridViewI?-

[解决办法]
gridview本身就有这个功能,gridview都封装好了啊;。

[解决办法]
孟老大写过一个ajax绑定GridView的例子,不过他是用select的onchange事件,你可以改成文本框为焦点时的onkeyup事件,当然最好能判断一下keycode
传送门:使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现
[解决办法]
ajax updatepanel(一本ajax书中的代码)

C# code
<%@ 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"  />&nbsp;<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

热点排行