边输入边过滤,并不要等失去焦点的时候再过滤?请假高手.

Luohui_c 2009-03-10 03:07:27



我在TextBox1_TextChanged中重新绑定了一次..效果已经是OK的.现在就是在TEXTBOX1中输入条件市区焦点的时候,页面的刷新有点晃眼,该怎么样处理呢,用AJAX如何处理呢?
另外,TextBox文本框控件,是否有Keydown事件.也就是说在边输入边过滤,并不要等失去焦点的时候再过滤.
请高手解答解答..
俺是新手..
所以请教大家了.

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.Data.SqlClient;

public partial class uuuuu : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{
SqlConGet();
}
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{

if (TextBox1.Text.Trim() == "")
{
SqlConGet();

}
else
{
SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);
SqlDataAdapter sqldata = new SqlDataAdapter("Select * from asyuser", sqlcon);
DataSet sqldaset = new DataSet();
DataView sqldaview = new DataView();
try
{
sqlcon.Open();
sqldata.Fill(sqldaset, "asyuser");
sqldaview.Table = sqldaset.Tables["asyuser"];
sqldaview.RowFilter = "userno like " + "'" + TextBox1.Text.Trim() + "'";
GridView1.DataSource = sqldaview;
GridView1.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
Response.End();
}
finally
{
sqlcon.Close();
}
}
}

protected void SqlConGet()
{
SqlConnection sqlcon = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);
SqlDataAdapter sqldata = new SqlDataAdapter("Select * from asyuser", sqlcon);
DataSet sqldaset = new DataSet();
DataView sqldaview = new DataView();
try
{
sqlcon.Open();
sqldata.Fill(sqldaset, "asyuser");
sqldaview.Table = sqldaset.Tables["asyuser"];
//sqldaview.RowFilter = "userno like " + "'" + TextBox1.Text.Trim() + "'";
GridView1.DataSource = sqldaview;
GridView1.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
Response.End();
}
finally
{
sqlcon.Close();
}

}
}




<%@ Page Language="C#" AutoEventWireup="true" CodeFile="uuuuu.aspx.cs" Inherits="uuuuu" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<style type="text/css">

#TextBox1
{
margin:0 0 1px;padding:0px 0 0 20px!important;padding:0 0 0 20px;background:url(images/Search.gif) no-repeat 0 -1px #fffce9;
}


</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Font-Bold="True" Text="查询:"></asp:Label>
<asp:Label ID="Label2" runat="server" Text="用户名:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged" AutoPostBack="True"></asp:TextBox>
<asp:GridView ID="GridView1" runat="server" BackColor="White" BorderColor="White"
BorderStyle="Ridge" BorderWidth="2px" CellPadding="3" CellSpacing="1" EmptyDataText="无返回数据:1.请确认查询条件;2.请与管理员联系."
EnableSortingAndPagingCallbacks="True" GridLines="None" AllowPaging="True" AllowSorting="True">
<RowStyle BackColor="#DEDFDE" ForeColor="Black" />
<FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
<PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
</asp:GridView>

</div>
</form>
</body>
</html>
...全文
123 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangniao 2009-03-11
  • 打赏
  • 举报
回复
发个帖子,站位
jfd198512 2009-03-10
  • 打赏
  • 举报
回复
顶!LZ
「已注销」 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zzxap 的回复:]
HTML code

先安装asp.net ajax 1.x

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtClsnum" runat="server" AutoPostBack="True" OnTextChanged="txtClsnum_TextChanged" ForeColor="#215DC6"></asp:TextBox>
</ContentTemp…
[/Quote]



我已经安装了 ajax ,并且用AjaxControlToolkit的模板重新写的..
「已注销」 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zzxap 的回复:]
HTML code

先安装asp.net ajax 1.x

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtClsnum" runat="server" AutoPostBack="True" OnTextChanged="txtClsnum_TextChanged" ForeColor="#215DC6"></asp:TextBox>
</ContentTemp…
[/Quote]


zzxap 2009-03-10
  • 打赏
  • 举报
回复
[code=HTML]

先安装asp.net ajax 1.x

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtClsnum" runat="server" AutoPostBack="True" OnTextChanged="txtClsnum_TextChanged" ForeColor="#215DC6"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>

[/CODE]
大神来了丶 2009-03-10
  • 打赏
  • 举报
回复
up
zzxap 2009-03-10
  • 打赏
  • 举报
回复
首先要安装asp.net ajax
「已注销」 2009-03-10
  • 打赏
  • 举报
回复
那这个copy的副本也存在内存中啊.同样占用内存了吧?是不是这样呢?指教..
「已注销」 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zzxap 的回复:]
HTML code
安装asp.net ajax 1.0
用updatepanel把textbox围起来。TextBox1_TextChanged就不会感觉到刷新了
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtClsnum" runat="server" AutoPostBack="True" ForeColor="#215DC6"></asp:TextBox>
</ContentTemplate>

[/Quote]


怎么我按照上面设置了..导致TextBox1_TextChanged没有反应啊?
是不是<asp:UpdatePanel 还要像DragPanelExtender设置TargetControlID啊?好像他没有这个属性啊.
CutBug 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Luohui_c 的回复:]
那是不是先吧查询出来的所有数据都copy一份出来...然后查询的时候就调用该数据呢?
[/Quote]
最好这样,放在DataTable里,用DataTable.Select()方法筛选就可以了
blackmeit 2009-03-10
  • 打赏
  • 举报
回复
你要过滤什么东西,下面的代码表示只能输入数字,不过需要用ajax框架。具体细节百度"ajaxToolkit"
<ajaxToolkit:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server"
TargetControlID="TextBox1" FilterType="Numbers"/>
「已注销」 2009-03-10
  • 打赏
  • 举报
回复
那是不是先吧查询出来的所有数据都copy一份出来...然后查询的时候就调用该数据呢?
Teng_s2000 2009-03-10
  • 打赏
  • 举报
回复
输入一个字符要读取一下数据库,不知道用户一多,你的Sever还能承受的了吗?
zzxap 2009-03-10
  • 打赏
  • 举报
回复
[code=HTML]
安装asp.net ajax 1.0
用updatepanel把textbox围起来。TextBox1_TextChanged就不会感觉到刷新了
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtClsnum" runat="server" AutoPostBack="True" ForeColor="#215DC6"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>

[/CODE]
CutBug 2009-03-10
  • 打赏
  • 举报
回复
参考一下google输入提示
「已注销」 2009-03-10
  • 打赏
  • 举报
回复
可不可以给个示例呢?
lidongwei18 2009-03-10
  • 打赏
  • 举报
回复
hao
CutBug 2009-03-10
  • 打赏
  • 举报
回复
keyup一下就调数据库,这样效率是个问题,最好是把数据全部取出来,然后做过滤
CutBug 2009-03-10
  • 打赏
  • 举报
回复
添加onkeyup事件,onkeyup事件里js函数用调后台ajax method
xxq860725 2009-03-10
  • 打赏
  • 举报
回复
请假高手? 怪不得没人敢回哦 呵呵

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧