23/11/2007

Delete no GridView

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..

<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>


[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjec
MethodType.Delete, true)&93;
public static bool ExcluiGrupo(string _idGrupo)
{
     return true;
}



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


Thiagos25

Respostas

23/11/2007

Rafdragon

thiagos25,

Eu sei fazer isso de uma outra forma.

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

ASP . NET:

<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#:

    protected void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ImageButton BtnEdit = (ImageButton)e.Row.Cells&91;2&93;.Controls&91;0&93;;
            BtnEdit.CommandArgument = e.Row.RowIndex.ToString();
           
            ImageButton BtnExcluir = (ImageButton)e.Row.Cells&91;3&93;.Controls&91;0&93;;
            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&93;;
                ListItem item = new ListItem();
                item.Text = Server.HtmlDecode(row.Cells&91;0&93;.Text.ToString());
                DeleteRegistro(item.Text.ToString());
                break;
            case "Editar":
                int index2 = Convert.ToInt32(e.CommandArgument);
                GridViewRow rowEdit = GridView1.Rows[index2&93;;
                ListItem item0 = new ListItem();
                item0.Text = Server.HtmlDecode(rowEdit.Cells&91;0&93;.Text.ToString());
                ListItem item1 = new ListItem();
                item1.Text = Server.HtmlDecode(rowEdit.Cells&91;1&93;.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


Responder Citar