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 pàgina.
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 pàgina)
¿Alguien sabe como cumplir los dos a la vez ?