onKeyUp codebehind sin postback

XavierM
31 de Diciembre del 2008
Hola a todos,

Tengo un TextBox, (TextBox1), que hago servir para filtrar un grid mediante \'SqlDataSource1.FilterExpression\' i ajax.

onKeyUp en codebehind sin postback

He probado dos maneras que me funcionan:

Metodo 1:

en fichero aspx:
<asp:TextBox ID="TextBox1" runat="server" Height="13px" Width="102px" AutoPostBack="False"></asp:TextBox>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">

<ContentTemplate>
aqu tengo un grid que ensenya los datos
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TextBox1" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>


en fichero aspx.vb:
Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If Me.TextBox1.Text = "" Then
Me.SqlDataSource1.FilterExpression = "CodigoCliente like \'%\'"
Else
Me.SqlDataSource1.FilterExpression = "RazonSocial like \'%" & Me.TextBox1.Text & "%\'"
End If
End Sub


Metodo 2:

en fichero aspx:
<asp:TextBox ID="TextBox1" runat="server" Height="13px" Width="102px" onKeyUp="return llamada()" AutoPostBack="False"></asp:TextBox>

<script language="javascript" type="text/javascript">
function llamada() {
__doPostBack("Obj",\'\') ;
}
</script>

en fichero aspx.vb:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Request.Params("__EVENTTARGET") = "Obj" Then filtro()
End Sub

Protected Sub filtro()
If Me.TextBox1.Text = "" Then
Me.SqlDataSource1.FilterExpression = "CodigoCliente like \'%\'"
Else
Me.SqlDataSource1.FilterExpression = "RazonSocial like \'%" & Me.TextBox1.Text & "%\'"
End If
End Sub


Lo que yo quiero es que es filtro se haga con dos requisitos:
a. sin que se realize el refresco de pgina.
b. en el evento \'onKeyUp\'


El Metodo 1 cumple el requisito a (el b no pq se realiza en el evento \'TextChanged\')
El Metodo 2 cumple el requisito b (el __doPostBack provoca refresco de pgina)

Alguien sabe como cumplir los dos a la vez ?