Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KhaosDoctor

Erros em Row Command

Recommended Posts

Olá pessoal,

 

Estou trabalhando com alguns GridViews e exclusivamente em um deles estou tendo alguns problemas.

 

O grid deve mostrar informações de usuários, porém ele também contem um botão "Alterar" e outro "Enviar email", com o primeiro botão preciso fazer com que o grid dê um postback e preencha as informações da linha selecionada em um fieldset logo acima, ou seja, eu preciso transpor as informações de cada coluna daquela linha para uma sequencia de caixas de texto e comboboxes. Porém o comando não faz nada, já tentei atualizar algumas linhas e até colocar o fieldset em um updatepanel, porém o botão parece morto, ele não dá nenhum erro e também não preenche as caixas de texto.

 

Eis o código:

 

Protected Sub dgv1_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles dgv1.RowCommand
        If e.CommandName = "Edit" Then
            update = True
            CreateUserButton.Text = "Alterar"
            Dim rowsindex As Integer = Convert.ToInt32(e.CommandArgument)
            Email.Text = dgv1.DataKeys(rowsindex)("Email").ToString
            UserName.Text = dgv1.DataKeys(rowsindex)("Login").ToString


            Dim com As New SqlCommand(String.Format("SELECT a.id, b.id FROM tbpermis AS a, tbemp AS b WHERE a.permissao LIKE '{0}' AND b.nomefantasia LIKE '{1}'", dgv1.DataKeys(rowsindex)("Tipo").ToString, dgv1.DataKeys(rowsindex)("Empresa").ToString), con)
            Dim da As New SqlDataAdapter(com)
            Dim dt As New DataTable
            con.Open()
            da.Fill(dt)
            Emp.SelectedValue = Convert.ToInt32(dt.Rows(0)(1).ToString)
            Tipo.SelectedValue = Convert.ToInt32(dt.Rows(0)(0).ToString)
            con.Close()

Obs: Meu gridview está dentro de um updatepanel.

 

O outro erro que estou tendo, na verdade, não pode ser considerado um erro, já que o comando é executado.

 

No botão "enviar email", eu preciso que uma nova janela ou aba seja aberta no browser seguindo o endereço "mailto:email", se eu usar apenas o response.redirect a janela de envio abre na mesma página, sobrepondo a minha, eu procurei algumas dicas e exemplos de código e cheguei neste:

 

ElseIf e.CommandName = "Email" Then
            Dim rowindex As Integer = Convert.ToInt32(e.CommandArgument)
            Dim url As String = "mailto:" & dgv1.DataKeys(rowindex)("Email").ToString()
            ScriptManager.RegisterStartupScript(dgv1, Me.Page.GetType, "Email", String.Format("window.open('{0}','Graph','height=400,width=500');", url), True)

Porém ao executar o JavaScript, o GridView desaparece completamente, e só recarregando a página que ele volta a aparecer, já tentei dar redirect com RawURL, mas se faço isto a janela do JS não abre e o botão não executa nada.

 

Mais uma vez eu aviso que o grid está dentro de um updatepanel.

 

Agradeço quem puder me ajudar.

 

Obrigado

K.D

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro problema terá que debugar e ver se algum dos valores estão errados. Já debugou linha por linha para ver se o resultado é o esperado?

Sobre o segundo problema recomendo abrir alguma janela com jquery ou simples javascript, não é o suficiente?

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, consegui resolver o erro retirando uma função isPostBack, o problema das caixas de texto era que ele não estava dando o update por causa que o postback não estava enviando as informações, corrigi este erro com algumas variáveis de sessões.

 

Felizmente está tudo funcionando agora :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.