Inquiridor
Focus() não funciona após TextChanged

Pergunta
-
Bom dia pessoal.
Estou enfrentando a seguinte situação: Quando digito determinada informação em um campo ele realiza o evento TextChanged e valida algumas situações e também da utilizo método Focus() para focar terminado campo do formulário, só que, a aplicação está ignorando o Focus(), eu acredito que seja por causa do AutoPostBack, alguém já passou por isso e tem ideia do que eu possa fazer para resolver este problema?
Todas as Respostas
-
-
-
-
Anderson quando o evento é acionado é feito um postback, assim o controle perde o foco que você havia colocado com o focus().
Nesse caso você pode fazer seu textchaged com javascript usando um keydown, assim você tem mais controle e fica melhor até para o usuário.
Se quiser postar o código podemos ajudar melhor.
Elvis Rodrigues Analista Desenvolvedor .Net MCTS .Net Framework, SQL Server 2005, WPF, ASP NET foxelv@hotmail.com -
-
Anderson quando o evento é acionado é feito um postback, assim o controle perde o foco que você havia colocado com o focus().
Nesse caso você pode fazer seu textchaged com javascript usando um keydown, assim você tem mais controle e fica melhor até para o usuário.
Se quiser postar o código podemos ajudar melhor.
Elvis Rodrigues Analista Desenvolvedor .Net MCTS .Net Framework, SQL Server 2005, WPF, ASP NET foxelv@hotmail.com Olá Elvis, vamos lá, vou postar o aspx:
<asp:TabPanel ID="tbItemdeControle" HeaderText="Itens" runat="server" Enabled="False"> <HeaderTemplate> Item de controle</HeaderTemplate> <ContentTemplate> <div> <table class="tabela"> <tr> <td class="cabecalho" colspan="2"> Planejamento e controle de projetos </td> </tr> <tr> <td class="espaco"> Item de controle </td> <td> <asp:DropDownList ID="ddlItemControle" runat="server" Width="455px" TabIndex="1" /> </td> </tr> <tr> <td class="espaco"> Usar item do EMS? </td> <td> <asp:RadioButtonList ID="rblItemEms" runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="rblItemEms_SelectedIndexChanged" AutoPostBack="True" TabIndex="900"> <asp:ListItem Value="1">Sim</asp:ListItem> <asp:ListItem Value="0" Selected="True">Não</asp:ListItem> </asp:RadioButtonList> </td> </tr> <tr> <td colspan="2" class="alinha_centro"> <asp:Panel runat="server" ID="pnItemEms" Visible="False"> <br /> <table class="tabela"> <tr> <td colspan="6" class="cabecalho_interno"> Item Ems </td> </tr> <tr class="alinha_centro"> <td> Código </td> <td> Unid. </td> <td> Quant. </td> <td> Ult. Compra </td> <td> Ult. Valor </td> <td> Total </td> </tr> <tr class="alinha_centro"> <td> <asp:TextBox ID="txbCodItemEms" runat="server" AutoPostBack="True" Width="60px" OnTextChanged="txbCodItemEms_TextChanged" TabIndex="2"></asp:TextBox> <asp:ImageButton ID="btn_consultarItem" runat="server" CausesValidation="False" ImageUrl="~/images/ZoomHS.png" Width="16px" /> </td> <td> <asp:TextBox ID="txbUnMedidaItemEms" runat="server" CssClass="readonly" ReadOnly="True" Width="35px" Enabled="False"></asp:TextBox> </td> <td> <asp:TextBox ID="txbQtdeItemEms" runat="server" AutoPostBack="True" Width="50px" OnTextChanged="txbQtdeItemEms_TextChanged" TabIndex="3"></asp:TextBox> </td> <td> <asp:TextBox ID="txbDtUltAqItemEms" runat="server" CssClass="readonly" ReadOnly="True" Width="65px" Wrap="False" Enabled="False"></asp:TextBox> </td> <td> <asp:TextBox ID="txbUltValItemEms" runat="server" CssClass="readonly" ReadOnly="True" Width="60px" Wrap="False" Enabled="False"></asp:TextBox> </td> <td> <asp:TextBox ID="txbValTotalItemEms" runat="server" CssClass="readonly" ReadOnly="True" Width="60px" Wrap="False" Enabled="False"></asp:TextBox> </td> </tr> <tr> <td colspan="6" class="alinha_centro"> Descrição </td> </tr> <tr> <td colspan="6" class="alinha_centro"> <asp:TextBox ID="txbDescItemEms" runat="server" AutoPostBack="True" TabIndex="16" Width="565px" ReadOnly="True" CssClass="readonly"></asp:TextBox> </td> </tr> </table> <br /> </asp:Panel> </td> </tr> <tr> <td colspan="2" class="alinha_centro"> <asp:Panel runat="server" ID="pnItem"> <table class="tabela"> <tr> <td colspan="6" class="cabecalho_interno"> Item relacionado </td> </tr> <tr class="alinha_centro"> <td> Código </td> <td> Descrição </td> <td> Quant. </td> <td> Valor </td> <td> Valor total </td> </tr> <tr class="alinha_centro"> <td> <asp:TextBox ID="txbCodItemRel" runat="server" AutoPostBack="True" TabIndex="400" Width="60px" ReadOnly="True" CssClass="readonly"></asp:TextBox> </td> <td> <asp:TextBox ID="txbDescItemRel" runat="server" Width="400px" AutoPostBack="True" ontextchanged="txbDescItemRel_TextChanged" TabIndex="4"></asp:TextBox> </td> <td> <asp:TextBox ID="txbQtdeItemRel" runat="server" AutoPostBack="True" TabIndex="5" Width="50px" ontextchanged="txbQtdeItemRel_TextChanged"></asp:TextBox> </td> <td> <asp:TextBox ID="txbValorItemRel" runat="server" Width="70px" Wrap="False" OnKeyUp="formataValor(this, event)" OnTextChanged="txbValorItemRel_TextChanged" AutoPostBack="True" TabIndex="6"></asp:TextBox> </td> <td> <asp:TextBox ID="txbValorTotalRel" runat="server" Width="70px" Wrap="False" OnKeyUp="formataValor(this, event)" ReadOnly="True" CssClass="readonly" TabIndex="200"></asp:TextBox> </td> </tr> </table> </asp:Panel> </td> </tr> <tr> <td colspan="2" class="rodape"> <asp:Button runat="server" ID="btnRelacionar" Text="Relacionar" OnClick="btnRelacionar_Click" TabIndex="7" CssClass="botao"/> </td> </tr> </table> <br /> <table class="tabela"> <tr> <td class="alinha_centro"> <asp:Panel runat="server" ID="pnItemRelacionado" GroupingText="Item relacionado" Visible="False"> <table> <tr> <td class="alinha_centro"> <asp:GridView ID="gvListaItemRelacionado" runat="server" AutoGenerateColumns="False"> <Columns> <asp:ButtonField ButtonType="Image" CommandName="Editar" HeaderText="Editar" ImageUrl="~/images/EditTableHS.png" Text="Editar"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:ButtonField> <asp:ButtonField ButtonType="Image" CommandName="Excluir" HeaderText="Apagar" ImageUrl="~/images/delete.gif" Text="Apagar"> <ItemStyle HorizontalAlign="Center" /> </asp:ButtonField> <asp:BoundField DataField="ItemRelCodigo" HeaderText="Código" HtmlEncode="False"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:BoundField> <asp:BoundField DataField="ItemRelDescricao" HeaderText="Descrição" HtmlEncode="False"> </asp:BoundField> </Columns> </asp:GridView> </td> </tr> </table> </asp:Panel> </td> </tr> <tr> <td> Prazo <asp:TextBox ID="txbPrazo" runat="server" Width="100px" onkeypress="mascaraData(this)" TabIndex="8"></asp:TextBox> Total <asp:TextBox ID="txbValor" runat="server" Width="100px" OnKeyUp="formataValor(this, event)" ReadOnly="True" CssClass="readonly" TabIndex="100"></asp:TextBox> </td> </tr> <tr> <td class="rodape"> <asp:Button ID="btnGravarItemControle" runat="server" Text="Gravar" CssClass="botao" TabIndex="9" /> <asp:Button ID="btnCancelar" runat="server" Text="Cancelar" CssClass="botao" TabIndex="400" /> </td> </tr> </table> </div> </ContentTemplate> </asp:TabPanel>
Este é o método que executa:
protected void txbDescItemRel_TextChanged(object sender, EventArgs e) { txbQtdeItemRel.Text = string.Empty; txbValorItemRel.Text = string.Empty; txbValorTotalRel.Text = string.Empty; txbQtdeItemRel.Focus(); }
-
Se você não tiver referência a biblioteca do Jquery será necessário fazer.
Daí você faz assim:
//Quando o usuário preencher o campo e sair do campo vai executar esse código
$("#txbDescItemRel").blur(function() {
$("#txbQtdeItemRel").val("");
$("#txbValorItemRel").val("");
$("#txbValorTotalRel").val("");
$("#txbQtdeItemRel").focus();
});Caso não funcione você precisará inspecionar o elemento pelo browser e ver o id Exato do seus textbox.
Qualquer dúvida posta ai.
Elvis Rodrigues Analista Desenvolvedor .Net MCTS .Net Framework, SQL Server 2005, WPF, ASP NET foxelv@hotmail.com