Usuário com melhor resposta
Problema com updatePanel

Pergunta
-
Olá pessoal, estou com o seguinte cenário.
tenho um dropdownlist, e um botao dentro de updatepanel.
tenho um try catch no evento click do botao.
se nao tiver nenhum item selecionado no dropdownlist.
ele gera uma exception. onde capturo e coloco a msg em um label.
Meu problema é: toda vez que acontece a exceção, não consigo selecionar os itens do dropdownlist com mouse.
só consigo percorrer os itens passando na "SETA" do teclado.
depois de uns 10 segundos é que consigo listar pelo mouse.
Não sei se tem algo a ver em eu ter gerado uma exceção. Mas espero que alguem possa me ajudar.
Respostas
-
resolvi este problema da seguinte maneira
Public Shared Sub EncapsulaErrosAsync(ByVal ObjectPage As System.Web.UI.Page)
Dim oScript As New System.Text.StringBuilder
With oScript
.Append("function endRequest(sender, endRequestEventArgs) {")
.Append(" var error = endRequestEventArgs.get_error();")
.Append(" if(error !== null) {")
.Append(" alert(error.description);")
.Append(" endRequestEventArgs.set_errorHandled(true);")
.Append(" }")
.Append("}")
End With
ObjectPage.ClientScript.RegisterStartupScript(GetType(String), New Guid().ToString, oScript.ToString, True)
End Sub
Todas as exeptions assíncronas será responsabilidade desta funcao javascript.
Todas as Respostas
-
Olá Belinni,
Você diz que quando ocorre uma Exception a sua dropdowlist fica inacessivel ao mouse é isso?
Essa Exception é gerada pelo simples fato de não ter selecionado nada no DropDownList?
Você não poderia usar um validator do tipo RequiredFieldValidator no lugar da Exception?
Existe muito mais código a ser executado no CATCH além da msg do label?
O UpdatePanel está conditional ou always?
Se puder responder essas perguntinhas acredito que será mais facil de chegar a uma solução.
-
Marcio Gomes wrote: Olá Belinni,
Você diz que quando ocorre uma Exception a sua dropdowlist fica inacessivel ao mouse é isso?
Essa Exception é gerada pelo simples fato de não ter selecionado nada no DropDownList?
Você não poderia usar um validator do tipo RequiredFieldValidator no lugar da Exception?
Existe muito mais código a ser executado no CATCH além da msg do label?
O UpdatePanel está conditional ou always?
Se puder responder essas perguntinhas acredito que será mais facil de chegar a uma solução.
Meu behind
Partial Class _Default
Inherits System.Web.UI.Page
Private Sub InicializarForm()
PreencherCombo()
End Sub
Private Sub PreencherCombo()
With ddlCombo
.Items.Add(New ListItem("texto 1", "0"))
.Items.Add(New ListItem("texto 2", "1"))
.Items.Add(New ListItem("texto 3", "2"))
.SelectedIndex = -1
End With
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
InicializarForm()
End If
End Sub
Protected Sub btnGravar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGravar.Click
Try
Throw New Exception("Gerei um Erro")
Catch ex As Exception
ShowMsg(Me.Page, ex.Message)
End Try
End Sub
Public Shared Sub ShowMsg(ByVal ObjectPage As System.Web.UI.Page, ByVal Message As String)
ScriptManager.RegisterStartupScript(ObjectPage, GetType(String), New Guid().ToString, "alert('" & Message & "');", True)
End Sub
End Class
MEU aspx
<body>
<form id="form1" runat="server">
<aspcriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table border="0" cellpadding="2" cellspacing="2" style="width: 100%">
<tr>
<td>
<aspropDownList ID="ddlCombo" runat="server" Width="400px">
</aspropDownList></td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnGravar" runat="server" Text="Gerar Erro" /></td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
asdfadf
</ProgressTemplate>
</asp:UpdateProgress>
</form>
</body> -
Marcio Gomes wrote: Olá Belinni,
Você diz que quando ocorre uma Exception a sua dropdowlist fica inacessivel ao mouse é isso?
Essa Exception é gerada pelo simples fato de não ter selecionado nada no DropDownList?
Você não poderia usar um validator do tipo RequiredFieldValidator no lugar da Exception?
Existe muito mais código a ser executado no CATCH além da msg do label?
O UpdatePanel está conditional ou always?
Se puder responder essas perguntinhas acredito que será mais facil de chegar a uma solução.
Lembrando que este problema ocorre apenas no Firefox.
Constatei pelo menos no IE7 o combo funciona. -
resolvi este problema da seguinte maneira
Public Shared Sub EncapsulaErrosAsync(ByVal ObjectPage As System.Web.UI.Page)
Dim oScript As New System.Text.StringBuilder
With oScript
.Append("function endRequest(sender, endRequestEventArgs) {")
.Append(" var error = endRequestEventArgs.get_error();")
.Append(" if(error !== null) {")
.Append(" alert(error.description);")
.Append(" endRequestEventArgs.set_errorHandled(true);")
.Append(" }")
.Append("}")
End With
ObjectPage.ClientScript.RegisterStartupScript(GetType(String), New Guid().ToString, oScript.ToString, True)
End Sub
Todas as exeptions assíncronas será responsabilidade desta funcao javascript.