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


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