none
Botões em campos CommandField no dataGrid, como usar eles para deletar itens do banco de dados ? RRS feed

  • Discussão Geral

  • Estou desenvolvendo um site em ASP .NET / C# usando MySQL/Visual Studio 2008 
    O site tem uma sessão que é uma galeria de imagens.
    Estou desenvolvendo a parte administrativa dessa sessão, onde o usuário pode inserir um album de imagens. 
    Ele insere o nome, e assim vai inserindo imagem por imagem como ele desejar.

    Na mesma página, existem um preview da galeria que estou carregando em um componente dataGrid.
    Por incompatibilidade do VS2008 e MySQL estou carregando esses itens do banco de dados via códico C#: 

    Grid.DataSource = con.ds.Tables[0]; 
    Grid.DataBind(); 

    Adicionei alguns campos no dataGrid, e um deles é um CommandField que traz um botão que se encarregaria de deletar as imagens que o usuários quiser.

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BorderStyle="None">
    <Columns>
    <asp:BoundField DataField="codAlbum" HeaderText="codAlbum" Visible="False" />
    <asp:BoundField DataField="codImagem" HeaderText="codImagem" Visible="False" />
    <asp:ImageField DataImageUrlField="imgPath" HeaderText="imgPath">
    </asp:ImageField> <asp:BoundField DataField="legenda" HeaderText="legenda" />
    <asp:CommandField DeleteImageUrl="~/img/remover.jpg" ShowDeleteButton="True" ButtonType="Image" />
    </Columns>
    </asp:GridView>

    O problema que estou encontrando é nessa parte, não sei como atribuir o comando DELETE aos botões que são gerados no dataGrid.

    Alguém pode me ajudar ?

    VB 2005
    • Tipo Alterado Rafael FagundesModerator segunda-feira, 23 de fevereiro de 2009 20:31 Topico modificado para comentario, depois mais de 7 dias sem interacao do usuario.
    • Tipo Alterado Rafael FagundesModerator segunda-feira, 23 de fevereiro de 2009 20:31 Topico modificado para comentario, depois mais de 7 dias sem interacao do usuario.
    quinta-feira, 5 de fevereiro de 2009 17:44

Todas as Respostas

  • Olá,

    Para isso você deve adicionar o DeleteCommand e o DeleteParameters no DataSource ligado ao seu GridView, por exemplo:

    <asp:GridView ID="GridView1" runat="server" AllowPaging="True"  
                AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="id"  
                DataSourceID="SqlDataSource1"
                <Columns> 
                    <asp:CommandField ShowDeleteButton="True" /> 
                    <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"  
                        ReadOnly="True" SortExpression="id" /> 
                    <asp:BoundField DataField="nome" HeaderText="nome" SortExpression="nome" /> 
                </Columns> 
            </asp:GridView> 
            <asp:SqlDataSource ID="SqlDataSource1" runat="server"  
                ConnectionString="<%$ ConnectionStrings:testeConnectionString %>"  
                DeleteCommand="DELETE FROM [categoria] WHERE [id] = @id"  
                InsertCommand="INSERT INTO [categoria] ([nome]) VALUES (@nome)"  
                SelectCommand="SELECT * FROM [categoria]"  
                UpdateCommand="UPDATE [categoria] SET [nome] = @nome WHERE [id] = @id"
                <DeleteParameters> 
                    <asp:Parameter Name="id" Type="Int32" /> 
                </DeleteParameters> 
                <UpdateParameters> 
                    <asp:Parameter Name="nome" Type="String" /> 
                    <asp:Parameter Name="id" Type="Int32" /> 
                </UpdateParameters> 
                <InsertParameters> 
                    <asp:Parameter Name="nome" Type="String" /> 
                </InsertParameters> 
            </asp:SqlDataSource> 

    []'s

    Rafael Fagundes
    quinta-feira, 12 de fevereiro de 2009 12:24
    Moderador