Solved

ontextchanged

Posted on 2011-02-18
10
706 Views
Last Modified: 2012-05-11
using ASP.Net with c#.
I want to filter the gridview data based on what is typed in a textbox. What I am currently doing is as follows: I have a "Filter" Button and it filters the cached data when the button is pressed.
What I want to accomplish is that it should filter as the user types in the textbox. for this I tried using the "OnTextChanged" event, but the user still has to take the focus away from the text box for the filter to kick in.

Is there any way it I can have the filter to work as the user types in the textbox without taking the focus away from the textbox.

Thanks.
0
Comment
Question by:patd1
  • 5
  • 2
  • 2
  • +1
10 Comments
 
LVL 16

Accepted Solution

by:
sjklein42 earned 167 total points
ID: 34928913
I believe there is an onKeyUp function that might be useful in this context.
0
 

Author Comment

by:patd1
ID: 34929060
ok, that sound promising, but how do i call server side method from javascript?

Thanks.
0
 
LVL 20

Expert Comment

by:informaniac
ID: 34929069
onKeyUp should be a client side event I guess. It won't fire the server event.
0
 
LVL 20

Assisted Solution

by:informaniac
informaniac earned 167 total points
ID: 34929184
Ajax.
0
 
LVL 6

Assisted Solution

by:Ramone_Hamilton
Ramone_Hamilton earned 166 total points
ID: 34929319
informaniac is correct, the onkeyup event can be used for this but it is client side only.  You can add it to a textbox in code like the following:

TextBoxName.Attributes.Add("onkeyup", "SomeJavscriptMethod(this)");

Open in new window

0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:patd1
ID: 34929403
I tried onkeyup, it's cool!
But I have to type it too quickly, before it shoots the postback. My users will be freaked out, as they may not be able to type more then one char before it fires, and they have to click again to bring the focus back to the text box. I don't know if I am able to explain it well.

Is there any way I can bring focus back on the text box after each RaisePostBackEvent? so the user can keep typing to narrow down the search?

Thank You.
0
 

Author Comment

by:patd1
ID: 34929440
And I wanted to add that I tried the this.TextBox1.Focus(); in the end of RaisePostBackEvent, but, it sets focus in the begining of the string. How do I put it at the end of the string.

thank you.
0
 
LVL 16

Expert Comment

by:sjklein42
ID: 34929441
The trick is to delay.

What I do in this situation is to set a short one-or-two second timeout when the onkeyup event fires, rather than do the search right away on every keystroke.  If there is already a timeout pending, i cancel it and start a new one.  Only when the timer eventually fires (the user has to have stopped typing for one or two seconds) should the actual search be done.

In client-side javascript I use setTimeout and clearTimeout functions.  Not sure how you would do it in your context.
0
 

Author Comment

by:patd1
ID: 34929609
I actually wrote another javascript to set focus on the textbox at the end of the string. It works, but seems to be too slow now.

Will the AJAx solution be faster?

Thanks.
0
 

Author Closing Comment

by:patd1
ID: 34930307
Wonderful!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now