none
Criar evento em um botão que esta dentro do GridView RRS feed

  • Pergunta

  • Blz gente?

    Entao, eu tenho um gridview e coloquei 2 image button so que agora eu queria criar evento nesses botoes.

    Um botao é para excluir e o outro para alterar

    obs:. Nao quero o codigo de como excluir e alterar apenas como cria o evento nos botões.

    Eu pesquisei um pouco e descobri que uma das maneiras de se fazer isso é usando command row, msm assim nao entendi como se usa isso direito



      <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
                OnPageIndexChanging="GridView1_PageIndexChanging" ForeColor="White" Width="400px"
                Font-Names="Arial" Font-Size="12px">
                <RowStyle BackColor="#525252" BorderWidth="1px" />
                <EmptyDataRowStyle BackColor="Black" />
                <Columns>
                    <asp:BoundField DataField="NOME" />
                    <asp:ButtonField ButtonType="Image" ImageUrl="~/Img/Bt_delete.png"
                        Text="Button" />
                    <asp:ButtonField ButtonType="Image" ImageUrl="~/Img/Bt_editar_not.png"
                        Text="Button" />
                </Columns>
                <PagerStyle Font-Names="Arial" Font-Size="11px" ForeColor="#3333FF" />
                <AlternatingRowStyle BackColor="#CCCCCC" />
            </asp:GridView>
    • Editado Rod.mg terça-feira, 4 de agosto de 2009 19:13
    terça-feira, 4 de agosto de 2009 17:51

Respostas

  • Blz gente?

    Entao, eu tenho um gridview e coloquei 2 image button so que agora eu queria criar evento nesses botoes.

    Um botao é para excluir e o outro para alterar

    obs:. Nao quero o codigo de como excluir e alterar apenas como cria o evento nos botões.

    Eu pesquisei um pouco e descobri que uma das maneiras de se fazer isso é usando command row, msm assim nao entendi como se usa isso direito



      <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
                OnPageIndexChanging="GridView1_PageIndexChanging" ForeColor="White" Width="400px"
                Font-Names="Arial" Font-Size="12px">
                <RowStyle BackColor="#525252" BorderWidth="1px" />
                <EmptyDataRowStyle BackColor="Black" />
                <Columns>
                    <asp:BoundField DataField="NOME" />
                    <asp:ButtonField ButtonType="Image" ImageUrl="~/Img/Bt_delete.png"
                        Text="Button" />
                    <asp:ButtonField ButtonType="Image" ImageUrl="~/Img/Bt_editar_not.png"
                        Text="Button" />
                </Columns>
                <PagerStyle Font-Names="Arial" Font-Size="11px" ForeColor="#3333FF" />
                <AlternatingRowStyle BackColor="#CCCCCC" />
            </asp:GridView>

    Olá Rod.mg, eu uso da seguinte maneira:
    No código asp.net
     <asp:GridView ID="gvEmissoraTV" runat="server" AutoGenerateColumns="False" 
                        CssClass="texto" onrowcommand="gvEmissoraTV_RowCommand" 
                        onrowdeleting="gvEmissoraTV_RowDeleting" 
                        onrowupdating="gvEmissoraTV_RowUpdating" Width="100%">
                        <Columns>
                            <asp:BoundField DataField="IDEmissoraTV" />
                            <asp:ButtonField ButtonType="Button" CommandName="Update" Text="Alterar">
                                <ControlStyle CssClass="btform" />
                            </asp:ButtonField>
                            <asp:ButtonField ButtonType="Button" CommandName="Delete" Text="Excluir">
                                <ControlStyle CssClass="btform" />
                            </asp:ButtonField>                        
                            <asp:BoundField DataField="emissora">
                                <ItemStyle HorizontalAlign="Left" />
                            </asp:BoundField>
                        </Columns>
                    </asp:GridView>
                    <asp:HiddenField ID="hdId" runat="server" />

    No Code Snippet do C#

    protected void gvEmissoraTV_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Update")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gvEmissoraTV.Rows[index];
                int id = Convert.ToInt32(row.Cells[0].Text);
                hdId.Value = id.ToString();
    
                DataTable dt = BLLEmissora.PesquisarEmissoraTV(id);
                txtNome.Text = dt.Rows[0]["NomeEmissora"].ToString();
                txtOrdem.Text = dt.Rows[0]["Ordem"].ToString();
                ddlUF.Value = dt.Rows[0]["UF"].ToString();
            }
            if (e.CommandName == "Delete")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gvEmissoraTV.Rows[index];
                int id = Convert.ToInt32(row.Cells[0].Text);
                hdId.Value = id.ToString();
    
                int retorno;
                string txtMsg = "";
                DataTable dt = ConstruirDataTable();
                retorno = BLLEmissora.Validar(dt, Operacao.Exclusao);
                if (retorno == 0)
                {
                    BLLEmissora.ExcluirEmissoraTV(id, usuario);
                    HtmlUtil.WindowMessage(Page, "Emissora excluída com sucesso!");
    
                    gvEmissoraTV.DataSource = BLLEmissora.ListarEmissoraTVComUF();
                    gvEmissoraTV.DataBind();
                }
            }
        }
    E para adiciono dois métodos assim, vazio desse jeito mesmo

     protected void gvEmissoraTV_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
    
        }
    
        protected void gvEmissoraTV_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
    
        }
    Pronto, funciona direitinho....
    Espero ter ajudado...
    • Marcado como Resposta Rod.mg quarta-feira, 5 de agosto de 2009 17:14
    • Não Marcado como Resposta Rod.mg quarta-feira, 5 de agosto de 2009 17:15
    • Marcado como Resposta Rod.mg quarta-feira, 5 de agosto de 2009 17:15
    quarta-feira, 5 de agosto de 2009 14:10

Todas as Respostas

  • Olá,

    Eu não uso o gridview
    eu monto tabelas na mão usando o componente table com tablerow e tablecell
    eu penso que tenho maior controle do que estou fazendo da minha maneira
    pois quando preciso colocar tabela dentro de tabela é mais facil no meu ver

    mais então, quando desejo atribuir um evento a um botão eu trabalho com DELEGATE
    da uma pesquisada sobre isso

    é bem legal

    abraço,
    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programmer but I like it.
    • Sugerido como Resposta ch_an_70 terça-feira, 4 de agosto de 2009 20:51
    terça-feira, 4 de agosto de 2009 18:01
  • vou me informar mais sobre esse DELEGATE.

    obrigado
    terça-feira, 4 de agosto de 2009 18:03
  • Blz gente?

    Entao, eu tenho um gridview e coloquei 2 image button so que agora eu queria criar evento nesses botoes.

    Um botao é para excluir e o outro para alterar

    obs:. Nao quero o codigo de como excluir e alterar apenas como cria o evento nos botões.

    Eu pesquisei um pouco e descobri que uma das maneiras de se fazer isso é usando command row, msm assim nao entendi como se usa isso direito



      <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
                OnPageIndexChanging="GridView1_PageIndexChanging" ForeColor="White" Width="400px"
                Font-Names="Arial" Font-Size="12px">
                <RowStyle BackColor="#525252" BorderWidth="1px" />
                <EmptyDataRowStyle BackColor="Black" />
                <Columns>
                    <asp:BoundField DataField="NOME" />
                    <asp:ButtonField ButtonType="Image" ImageUrl="~/Img/Bt_delete.png"
                        Text="Button" />
                    <asp:ButtonField ButtonType="Image" ImageUrl="~/Img/Bt_editar_not.png"
                        Text="Button" />
                </Columns>
                <PagerStyle Font-Names="Arial" Font-Size="11px" ForeColor="#3333FF" />
                <AlternatingRowStyle BackColor="#CCCCCC" />
            </asp:GridView>

    Olá Rod.mg, eu uso da seguinte maneira:
    No código asp.net
     <asp:GridView ID="gvEmissoraTV" runat="server" AutoGenerateColumns="False" 
                        CssClass="texto" onrowcommand="gvEmissoraTV_RowCommand" 
                        onrowdeleting="gvEmissoraTV_RowDeleting" 
                        onrowupdating="gvEmissoraTV_RowUpdating" Width="100%">
                        <Columns>
                            <asp:BoundField DataField="IDEmissoraTV" />
                            <asp:ButtonField ButtonType="Button" CommandName="Update" Text="Alterar">
                                <ControlStyle CssClass="btform" />
                            </asp:ButtonField>
                            <asp:ButtonField ButtonType="Button" CommandName="Delete" Text="Excluir">
                                <ControlStyle CssClass="btform" />
                            </asp:ButtonField>                        
                            <asp:BoundField DataField="emissora">
                                <ItemStyle HorizontalAlign="Left" />
                            </asp:BoundField>
                        </Columns>
                    </asp:GridView>
                    <asp:HiddenField ID="hdId" runat="server" />

    No Code Snippet do C#

    protected void gvEmissoraTV_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Update")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gvEmissoraTV.Rows[index];
                int id = Convert.ToInt32(row.Cells[0].Text);
                hdId.Value = id.ToString();
    
                DataTable dt = BLLEmissora.PesquisarEmissoraTV(id);
                txtNome.Text = dt.Rows[0]["NomeEmissora"].ToString();
                txtOrdem.Text = dt.Rows[0]["Ordem"].ToString();
                ddlUF.Value = dt.Rows[0]["UF"].ToString();
            }
            if (e.CommandName == "Delete")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gvEmissoraTV.Rows[index];
                int id = Convert.ToInt32(row.Cells[0].Text);
                hdId.Value = id.ToString();
    
                int retorno;
                string txtMsg = "";
                DataTable dt = ConstruirDataTable();
                retorno = BLLEmissora.Validar(dt, Operacao.Exclusao);
                if (retorno == 0)
                {
                    BLLEmissora.ExcluirEmissoraTV(id, usuario);
                    HtmlUtil.WindowMessage(Page, "Emissora excluída com sucesso!");
    
                    gvEmissoraTV.DataSource = BLLEmissora.ListarEmissoraTVComUF();
                    gvEmissoraTV.DataBind();
                }
            }
        }
    E para adiciono dois métodos assim, vazio desse jeito mesmo

     protected void gvEmissoraTV_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
    
        }
    
        protected void gvEmissoraTV_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
    
        }
    Pronto, funciona direitinho....
    Espero ter ajudado...
    • Marcado como Resposta Rod.mg quarta-feira, 5 de agosto de 2009 17:14
    • Não Marcado como Resposta Rod.mg quarta-feira, 5 de agosto de 2009 17:15
    • Marcado como Resposta Rod.mg quarta-feira, 5 de agosto de 2009 17:15
    quarta-feira, 5 de agosto de 2009 14:10
  • Perfeito cara, mto bom msm!!!

    Mto obrigado
    quarta-feira, 5 de agosto de 2009 17:14
  • Rod.mg, vote como útil...rs
    quarta-feira, 5 de agosto de 2009 17:27
  • ok,
    quarta-feira, 5 de agosto de 2009 17:36
  • thanks!
    quarta-feira, 5 de agosto de 2009 17:36
  • Muito bom Je Padawan. Parabéns!
    segunda-feira, 7 de setembro de 2009 13:17
  • Obrigada BrunoCosta.dsn
    sexta-feira, 29 de janeiro de 2010 18:26