Excluir vários registros ao mesmo tempo

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (1)

Vou mostrar como deletar vários registro de uma só vez atraves da GridView, usei uma Classe com um único método Delete pra mostrar com funciona também usei uma Classe do tipo Component Model DataObject.

      Olá, fiz esse artigo com conhecimento adquirido aqui no site, criei um sistema fictício onde pretendo mostrar alguns recursos  que aprende  por  aqui, como seria impossível mostra tudo em um único artigo enumerei cinco funcionalidades bem legais.  Vou  mostrar como deletar vários registro de uma só vez atraves da GridView, usei uma Classe com um único método Delete pra mostrar com funciona também usei uma Classe do tipo Component Model DataObject . veja os itens abaixo:

1)  ChecheBoxs em cada linha da GridView Produtos e no Cabeçalho onde vamos marcar todos ou alguns produtos que serão deletados.

 2) Classe Produto que ira conter um único método Delete consumido na hora de Deletar o mesmo.

3) Preencher um DropDownList com um database

4) Encher a GridView  Produtos a partir da Categoria passando parâmetro

5) Mostrar como fazer o passo 4  usando uma Classe do tipo Componente Model  e  Strore Procedure. Resultado final :

final.JPG 

utilizei banco de dados SQL SERVER 2005 EXPRESS com as tabelas Produto, Categoria  bem simples.

Tabelas.JPG

Primeiro abra o Visual Studio 2005, clique em File New > New Web Site > aparecera um tela.

Escolha ASP. NET Web Site linguagem C# e dê um nome a sua aplicação no meu caso Controle de Produto e clique em ok.

Feito isso selecione na toolbox um DropDownList1 e arraste para o default.aspx na smart tag selecione choose data source > new data source, crie uma novo conexão ou selecione uma existente e   salvar a string de conexão quando pedir , na próxima tela selecione database dê o nome de dsProduto  depois escolha a conexão que criamos  e em seguida  selecione id_CatProduto e a Descricao na tabela Cat_Produto  quando finalizar escolha a Descrição em select a data field to display   clique em ok. Agora altera as seguintes propriedades do  DropDownList1:  AppendDataBoundItems  mude para true depois em items collecions e adicione um item na propriedade Text digite  selecione e o valor -1 .

Agora adicione um botão mude as propriedade Text para Delete

 Vamos criar a classe Produto2 com o único método de Delete  que será consumida  no clique ao botão Delete. Para isso clique com a botão direito no projeto  na Solution Explore Add ASP. NET Folder  > App_Code como mostra a figura 3.

Explore.JPG

Figura 3:

Depois com o botão direito do mouse em App_Code  > Add new Item, na tela que aparece  Clique em Class de o nome da classe de Produto2.cs clique em Add

Crie a classe conforme a listagem 1.

Listagem 1:

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Web.Configuration;

 

 

/// <summary>

/// Summary description for Produto2

/// </summary>

namespace devmedia.artigo

{

    public class Produto2

    {

        private static readonly string _connectionString;

 

        private int _Id_Produto;

        private int _Id_CatProduto;

        private string _Nome;

 

        static  Produto2()

        {

            _connectionString = WebConfigurationManager.ConnectionStrings["AnunciosConnectionString"].ConnectionString;

        }

 

        public int Id_Produto

        {

            get { return _Id_Produto; }

            set { _Id_Produto = value; }

        }

 

        public int Id_CatProduto

        {

            get { return _Id_CatProduto; }

            set { _Id_CatProduto = value; }

        }

 

        public string Nome

        {

            get { return _Nome; }

            set { _Nome = value; }

        }

 

 

        public static void Delete(int Id_Produto)

        {

            Convert.ToInt32(Id_Produto);

            SqlConnection con = new SqlConnection(_connectionString);

            SqlCommand cmd = new SqlCommand("sp_Produto_Delete", con);

            cmd.CommandType = CommandType.StoredProcedure;

 

            cmd.Parameters.AddWithValue("@Id_Produto", Id_Produto);

 

            using (con)

            {

                con.Open();

                cmd.ExecuteNonQuery();

            }

            con.Close();

        }

    }

}

Store procedure

ALTER PROCEDURE [dbo].[sp_Produto_Delete]

(

@Id_Produto int

)

AS

DELETE Produto WHERE (Id_Produto = @Id_Produto)

Crie  também a Classe Produto.cs como na listagem 2. Só que agora uma classe do tipo Component Model DataObject, para mostrar  a diferença.

Na ToolBox navegue ate Data selecione um GridView e arraste para a pagina default.aspx

Na smart tag da Grid selecione  Choose data base > New data source, aparecera uma tela pra você escolher o tipo do data source selecione Object   a tela seguinte mostra todos os métodos disponíveis da classe por namespace  escolha devmedia.artigo.Produto avance , na próxima tela será mostrado os métodos que definimos como sendo do tipo Componente Model DataObject

Veja que o método SelectByCat  já estaselecionado conforme mostra a figura 3. 

Método.JPG

Isso devido a informação que passamos no parâmetro da Classe Produto.cs  veja listagem 2 .

Listagem 2:

 

Referências utilizadas

using System.Web.Configuration;

using System.Collections.Generic;

using System.Data.SqlClient;

 

/// <summary>

/// Summary description for Produto

/// </summary>

namespace devmedia.artigo Ficheiro ou gavata onde a class esta guardada

{

    Indica que a Classe é do tipo Component Model       

    [System.ComponentModel.DataObject]   

    public class Produto

    {

        private static readonly string _connectionString;

 

        private int _Id_Produto;

        private int _Id_CatProduto;

        private string _Apresentacao;

Construtor que recebe uma String de Conexão       

          static Produto()

        {

            _connectionString = WebConfigurationManager.ConnectionStrings["AnunciosConnectionString"].ConnectionString;

        }

        public int Id_Produto

        {

            get { return _Id_Produto; }

            set { _Id_Produto = value; }

        }

 

        public string Apresentacao

        {

            get { return _Apresentacao; }

            set { _Apresentacao = value; }

        }

 

        public int Id_CatProduto

        {

            get { return _Id_CatProduto; }

            set { _Id_CatProduto = value; }

        }

 

        public Produto(SqlDataReader reader)

        {

            _Id_Produto = (int) reader["Id_Produto"];

            _Id_CatProduto = (int) reader["Id_CatProduto"];

            _Apresentacao = (string) reader["Apresentacao"];

 

 

 

        }

 Class.JPG

 

Na próxima tela pedira que você indique de onde vai vir o parâmetro @Id_CatProduto  selecione  Control DropDownList1 como na figura 4.

Object1.JPG

Figura 4:

Agora clique novamente na smart tag da Grid depois em Edit columns ...  Adicione um Templete Field e dê ok, clique com o direito na Grid e em Edit templete  > column e adicione um controle CheckBox1  no templete que criamos  e depois outro no Heard Templete da Grid e adicione Id_Produto na propriedade DataKeyNames.

Agora falta só inserir o código no Botão Delete  clique duas vezes para chamar a tela de code

Click1.JPG

Marcamos os produtos  para serem deletados. Quando clicarmos em  Delete será feito uma varredura nas linhas da Grid  e onde o CheckBox for marcado será passado o id do produto daquela linha pro método Delete da Classe Produto2 , para cada linha marcada ate o  fim.

Ultimo passo: o código do CheckBox no Header  da GridView e não esqueça de mudar  a propriedade do Chebox2  AutoPostBack para true;

protected void CheckBox2_CheckedChanged(object sender, EventArgs e)

    {

        foreach (GridViewRow row in GridView1.Rows)

        {

            CheckBox ch = (CheckBox)row.FindControl("CheckBox1");

            if(ch != null)

            {

                ch.Checked = (sender as CheckBox).Checked;

            }

        }        //Podemos Selecionar todos de um vez

    }

Gostaria de Agradeçer em primeiro lugar a Deus depois a Equipe DevMedia por permitir a publicação do Artigo, ao Luciano Pimenta que sempre responde meus emails ao Fabio ao Guinther Pauli  ao Rodrigo Sendin , Pedro...  a  todos um grande abraço;

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?