Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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()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
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 :)
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...