none
Editar GridView - Via Código RRS feed

  • Pergunta

  • Pessoal, bom dia!
    Estou montando uma classe que trabalhe com o gridview (asp .net), sem que eu tenha que ficar reescrevendo código.

    Fiz várias coisas já, mas, uma delas esta bem difícil, que é editar.

    Para preencher o GRID eu uso o seguinte código:

    Grid:

     <asp:GridView ID="GridView2" runat="server" OnRowEditing="GridView2_RowEditing">
                    </asp:GridView>


    Preencher Grid:

    public void PreencherGrid(string Consulta, System.Web.UI.WebControls.GridView grid, Boolean mostrarEditar, Boolean mostrarDeletar)
        {
            fnConexao C = new fnConexao();
            SqlConnection con = new SqlConnection();
    
            try
            {
                con = C.AbrirBanco(con);
                SqlCommand comando = new SqlCommand(Consulta, con);
    
                SqlDataAdapter sqlA = new SqlDataAdapter(comando);
                DataSet data = new DataSet();
                sqlA.Fill(data);
    
                if (mostrarEditar == true || mostrarDeletar == true)
                {
                    CommandField cf = new CommandField();
                    cf.ButtonType = ButtonType.Button;
      
                    if (mostrarEditar == true)
                    {
                        cf.ShowEditButton = true;
                    }
    
                    if (mostrarDeletar == true)
                    {
                        cf.ShowDeleteButton = true;
                    }
    
    
                    //cf.ShowInsertButton = true;
                    cf.ControlStyle.CssClass = "btn btn-info";
                    grid.Columns.Add(cf);
                }
                grid.GridLines = GridLines.None;
                grid.CssClass = "table table-hover table-striped";
                grid.DataSource = data;
                grid.DataMember = data.Tables[0].TableName;
                grid.DataBind();
    
            }
            catch { }
    
            finally
            {
                con.Close();
            }
    
        }
    protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView2.EditIndex = e.NewEditIndex;
        }

    Preenche tudo certo, aparece os buttons (editar e deletar), porém, quando clico em "Editar" uma vez, não acontece nada.
    Se eu clico novamente os campos se abrem para editar (porém, todos zerados, não mantem com os dados que vai ser editado, como se na verdade estivesse "adicionando" ao invés de "Editando") mas, perde-se a formatação:

    Alguém sabe como não perder a formatação e como editar com os dados já carregados?

    Preenche, aparece o Button, tudo certo.


    • Editado Paulo.Sérgio segunda-feira, 16 de outubro de 2017 12:38 Melhor descrição
    segunda-feira, 16 de outubro de 2017 12:37

Respostas

  • How tO.

    porém, ja resolvi.

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (Button button in e.Row.Cells[0].Controls.OfType<Button>())
                {
                    button.CssClass = "btn btn-info";
                    if (button.Text == "Cancel") { button.Text = "Cancelar"; }
                    if (button.Text == "Edit") { button.Text = "Editar"; }
                    if (button.Text == "Select") { button.Text = "Selecionar"; }
                    if (button.Text == "Update") { button.Text = "Atualizar"; }
                }
    
            }
        }
    

    Claro se alguém tiver uma ideia melhor, estarei aberto em ouvir!

    • Marcado como Resposta Paulo.Sérgio quarta-feira, 18 de outubro de 2017 10:26
    quarta-feira, 18 de outubro de 2017 10:23

Todas as Respostas

  • Eu ja entendi o primeiro erro, é só dar um databind() ao fazer update, que esta tudo certo.

    Mas, ainda não consegui resolver o problema do css.

    Ao clicar em "Editar", ele abre os campos e preencher tudo certo, porém, os buttons perdem a formatação.
    Alguém sabe como contornar isso?

    segunda-feira, 16 de outubro de 2017 15:16
  • Bom dia, Paulo.Sérgio. Tudo bem?

    Obrigado por usar o fórum MSDN.

    Essa seria uma questão de "How to/Customização" ou "Break Fix/Erro"?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 17 de outubro de 2017 12:15
    Moderador
  • How tO.

    porém, ja resolvi.

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (Button button in e.Row.Cells[0].Controls.OfType<Button>())
                {
                    button.CssClass = "btn btn-info";
                    if (button.Text == "Cancel") { button.Text = "Cancelar"; }
                    if (button.Text == "Edit") { button.Text = "Editar"; }
                    if (button.Text == "Select") { button.Text = "Selecionar"; }
                    if (button.Text == "Update") { button.Text = "Atualizar"; }
                }
    
            }
        }
    

    Claro se alguém tiver uma ideia melhor, estarei aberto em ouvir!

    • Marcado como Resposta Paulo.Sérgio quarta-feira, 18 de outubro de 2017 10:26
    quarta-feira, 18 de outubro de 2017 10:23