Array
(
)

Delete no GridView

Thiagos25
   - 23 nov 2007

Fala Aê galera.... estou com um problema simples, mas que já me tomou a tarde toda....
seguinte... populei um gridview com ObjectDataSource... e adicionei no gridview o ´enabele deleting´.....

na hora que eu clico no ´Deletar´ dentro do meu grid ele até chama a o methodo... ´ExcluiGrupo(string _idGrupo)´ porém o parâmnetro ´idGrupo´ sempre está null, e ele deveria ter o conteudo da celula[0] na linha que foi clicada... (id do grupo).

segue o ´html´ do grid e a assinatura do metodo que exclui..

#Código

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                DataSourceID="objSelect">
                <Columns>
                    <asp:BoundField DataField="gsIdGrupo" HeaderText="gsIdGrupo" SortExpression="gsIdGrupo" />
                    <asp:BoundField DataField="gsGrupo" HeaderText="gsGrupo" SortExpression="gsGrupo" />
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                </Columns>
            </asp:GridView>
            <asp:ObjectDataSource ID="objSelect" runat="server" DeleteMethod="ExcluiGrupo" InsertMethod="CadastraGrupo"
                SelectMethod="ListaGrupo" TypeName="CORE.BLL.Grupo"
                UpdateMethod="AtualizaGrupo">
                <DeleteParameters>
                    <asp:Parameter Name="_idGrupo" Type="String" />
                </DeleteParameters>
                <UpdateParameters>
                    <asp:Parameter Name="_idGrupo" Type="String" />
                </UpdateParameters>
                <InsertParameters>
                    <asp:Parameter Name="_nomeGrupo" Type="String" />
                    <asp:Parameter Name="_permissoes" Type="String" />
                </InsertParameters>
            </asp:ObjectDataSource>


#Código
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjec
MethodType.Delete, true)]
public static bool ExcluiGrupo(string _idGrupo)
{
     return true;
}


desde já velew pela força.
bom fim de semana...
[/tagcod]

Rafdragon
   - 23 nov 2007

thiagos25,

Eu sei fazer isso de uma outra forma.

Segue abaixo uma outra forma de excluir 1 registro de um GridView:

ASP . NET:

#Código

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="Grid1" OnRowCommand="GridView1ItemCommand" OnRowCreated="GridView1_RowCreated">
            <HeaderStyle CssClass="GridHeader"/>
            <RowStyle CssClass="GridItem"/>
            <AlternatingRowStyle CssClass="GridAltItem"/>   
            <Columns>
                <asp:BoundField DataField="gsIdGrupo" HeaderText="IdGrupo" SortExpression="gsIdGrupo" />
                <asp:BoundField DataField="gsGrupo" HeaderText="gsGrupo" SortExpression="fgsGrupo" />
                <asp:buttonfield buttontype="Image" ImageUrl="..\Images\Editar.bmp" commandname="Editar" text="Editar" HeaderText="Editar" />
                <asp:buttonfield buttontype="Image" ImageUrl="..\Images\Excluir.bmp" commandname="Excluir" text="Excluir" HeaderText="Excluir" />
            </Columns>
        </asp:GridView>


Em C#:

#Código
    protected void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ImageButton BtnEdit = (ImageButton)e.Row.Cells[2].Controls[0];
            BtnEdit.CommandArgument = e.Row.RowIndex.ToString();
           
            ImageButton BtnExcluir = (ImageButton)e.Row.Cells[3].Controls[0];
            BtnExcluir.CommandArgument = e.Row.RowIndex.ToString();
        }
    }

 protected void CarregaGridView1()
    {
        DataSet dsGrid = new DataSet("dsGrid");
        GridView1.DataSource = GetDatadsGrid(dsGrid); //Essa função eu criei para carregar o GridView.
        GridView1.DataBind();
    }

 protected void GridView1ItemCommand(object source, GridViewCommandEventArgs e)
    {
        string command = e.CommandName;
        switch (command)
        {
            case "Excluir":
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = GridView1.Rows[index];
                ListItem item = new ListItem();
                item.Text = Server.HtmlDecode(row.Cells[0].Text.ToString());
                DeleteRegistro(item.Text.ToString());
                break;
            case "Editar":
                int index2 = Convert.ToInt32(e.CommandArgument);
                GridViewRow rowEdit = GridView1.Rows[index2];
                ListItem item0 = new ListItem();
                item0.Text = Server.HtmlDecode(rowEdit.Cells[0].Text.ToString());
                ListItem item1 = new ListItem();
                item1.Text = Server.HtmlDecode(rowEdit.Cells[1].Text.ToString());
               EditarRegistro(item0.Text.ToString(), item1.Text.ToString());
                break;
            default:
                break;
        }
    }


private void DeleteRegistro(string Id)
    {
        string Msg;

        DeleteGrupo(Id);//Essa função deleta um registro pelo Id

        CarregaGridView1();

    }



Espero ter ajudado...

:D