none
remover itens de um datatable RRS feed

  • Pergunta

  • Boa noite galera!

    Estou fazendo um sisteminha no qual eu adiciono itens a um pedido, estou fazendo em c#. Estou tentando me basear num exemplo do marcoratti, http://www.macoratti.net/aspn_ces.htm  porém o mesmo esta em VB.net ai estou tentando converter para c#. O meu problema é que nao estou conseguindo de jeito nehum criar o metodo de remoção de itens, sera que alguem poderia me ajudar? segue codigo abaixo:

        public partial class Teste_03 : System.Web.UI.Page

        {

            DataRow Linha;

            DataTable tbDados;

            DataColumn Coluna;

                  

            protected void Page_Load(object sender, EventArgs e)

            {

                if (!IsPostBack)

                {

                    carregaProduto();

                    Session["contador"] = 0;

                    tbDados = new DataTable();

                   

                    Coluna = new DataColumn();

                    Coluna.DataType = System.Type.GetType("System.String");

                    Coluna.ColumnName = "Código";

                    tbDados.Columns.Add(Coluna);

                  

                    Coluna = new DataColumn();

                    Coluna.DataType = System.Type.GetType("System.String");

                    Coluna.ColumnName = "Produto";

                    tbDados.Columns.Add(Coluna);

                

                    Coluna = new DataColumn();

                    Coluna.DataType = System.Type.GetType("System.String");

                    Coluna.ColumnName = "Quantidade";

                    tbDados.Columns.Add(Coluna);

                    Coluna = new DataColumn();

                    Coluna.DataType = System.Type.GetType("System.String");

                    Coluna.ColumnName = "Preço";

                    tbDados.Columns.Add(Coluna);

                    Session["TabelaDados"] = tbDados;

                    gridTamanhos.DataSource = tbDados;

                    gridTamanhos.DataBind();

                }

            }

            protected void btnAdicionar_Click(object sender, EventArgs e)

            {

                ProdutoBLL produto = new ProdutoBLL();

                PRODUTO pro = new PRODUTO();

                DataTable tbDadosSession = new DataTable();

                tbDadosSession = (DataTable)Session["TabelaDados"];

               string qtd = TextBox1.Text;

               pro.codprod = Convert.ToInt32(DDLproduto.SelectedValue);

               string nomeproduto = DDLproduto.SelectedItem.Text;

               string preco_prod = Convert.ToString(produto.preco_Produto(pro));

                Linha = tbDadosSession.NewRow();

                Linha["Código"] = pro.codprod;

                Linha["Produto"] = nomeproduto;

                Linha["Quantidade"] = qtd;

                Linha["Preço"] = preco_prod;

                tbDadosSession.Rows.Add(Linha);

                Session["TabelaDados"] = tbDadosSession;

                gridTamanhos.DataSource = tbDadosSession;

                gridTamanhos.DataBind();

                Session["contador"] = tbDadosSession.Rows.Count;

                TextBox1.Text = String.Empty;

                TextBox1.Focus();

            }

            public void carregaProduto()

            {

                ProdutoBLL produto = new ProdutoBLL();

                PRODUTO pro = new PRODUTO();

              

                DDLproduto.DataTextField = "nomeprod";

                DDLproduto.DataValueField = "codprod";

              

                DDLproduto.DataSource = produto.GetRegistro(pro);

                DDLproduto.DataBind();

               

            }

     No meu html eu tenho o link usado para o excluir o registro, o codigo segue abaixo:

    <html xmlns="http://www.w3.org/1999/xhtml" >

     <head id="Head1" runat="server">

     <title>Adicionando linhas no GridView</title>

     </head>

     <body>

     <form id="form1" runat="server">

     <asp:GridView

    ID="gridTamanhos"

    runat="server"

    BorderColor="#00C000"

    BorderStyle="Inset"

    BorderWidth="1px"

    EmptyDataText="Sem dados para exibir..."

         onselectedindexchanged="gridTamanhos_SelectedIndexChanged"   Width="282px"

         onrowdeleted="gridTamanhos_RowDeleted"

         onrowcommand="gridTamanhos_RowCommand"

         onrowdeleting="gridTamanhos_RowDeleting">

         <Columns>

             <asp:TemplateField ShowHeader="False">

                 <ItemTemplate>

                     <asp:LinkButton ID="LIK_remove" runat="server" CausesValidation="false"

                    

                                                CommandName="Remover"

                        onclick="LIK_remove_Click" Text="Remover Item  "></asp:LinkButton>

                 </ItemTemplate>

             </asp:TemplateField>

           </Columns>  

     </asp:GridView>

        <asp:DropDownList runat="server" AutoPostBack="True"

         Height="20px" Width="130px" ID="DDLproduto"

         OnSelectedIndexChanged="DDLestado_end_SelectedIndexChanged"></asp:DropDownList>

     <br />

     <asp:TextBox

    ID="TextBox1"

    runat="server" />

     <asp:Button

    ID="btnAdicionar"

    runat="server"

    OnClick="btnAdicionar_Click"

    Text="Adiconar" />

     </form>

     </body>

     </html>

     

     Agradeço se alguem puder me dar uma dica de como resolver isso ou pelo menos um norte.

    vlw.

     

    quinta-feira, 10 de maio de 2012 01:42

Respostas

  • Olá Rodrigo,

    Se vc observar, no seu código HTML tem um LinkButton chamado LIK_remove, ele tem um evento Click, que esta chamando o evento Lik_remove_Click.

    No caso, mude o nome do seu método para Lik_remove_Click e ele vai vincular tudo.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    sexta-feira, 11 de maio de 2012 00:59
    Moderador

Todas as Respostas

  • Olá Rodrigo,

    Acessei o link que vc passou e converti o método Excluir_Item para C#...

    Deve ficar como o descrito abaixo:

    public void Exclui_Item(Object s, DataGridCommandEventArgs e)
    {
      objDT = Session["Carrinho"];
      objDT.Rows[e.Item.ItemIndex].Delete();
      Session["Carrinho"] = objDT;
    
      dg.DataSource = objDT;
      dg.DataBind();
    
      lblTotal.Text = FormatCurrency(GetItemTotal(), 2);
    }

    Mais alguma dúvida? Acredito que vc só tenha que adequar essa nomenclatura com a nomenclatura de variáveis que vc esta utiilizando.

    []s!



    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 10 de maio de 2012 11:44
    Moderador
  • Boa noite galera!

    Estou fazendo um sisteminha no qual eu adiciono itens a um pedido, estou fazendo em c#. Estou tentando me basear num exemplo do marcoratti,http://www.macoratti.net/aspn_ces.htm  porém o mesmo esta em VB.net ai estou tentando converter para c#. O meu problema é que nao estou conseguindo de jeito nehum criar o metodo de remoção de itens, sera que alguem poderia me ajudar? segue codigo abaixo:

       public partialclass Teste_03 : System.Web.UI.Page

       {

           DataRow Linha;

           DataTable tbDados;

          DataColumn Coluna;

                 

           protectedvoid Page_Load(object sender,EventArgs e)

           {

               if (!IsPostBack)

               {

                   carregaProduto();

                   Session["contador"] = 0;

                   tbDados = new DataTable();

                  

                   Coluna = new DataColumn();

                   Coluna.DataType = System.Type.GetType("System.String");

                   Coluna.ColumnName ="Código";

                   tbDados.Columns.Add(Coluna);

                 

                   Coluna =new DataColumn();

                   Coluna.DataType = System.Type.GetType("System.String");

                   Coluna.ColumnName ="Produto";

                   tbDados.Columns.Add(Coluna);

               

                   Coluna =new DataColumn();

                   Coluna.DataType = System.Type.GetType("System.String");

                   Coluna.ColumnName ="Quantidade";

                   tbDados.Columns.Add(Coluna);

                   Coluna =new DataColumn();

                   Coluna.DataType = System.Type.GetType("System.String");

                   Coluna.ColumnName ="Preço";

                   tbDados.Columns.Add(Coluna);

                   Session["TabelaDados"] = tbDados;

                   gridTamanhos.DataSource = tbDados;

                   gridTamanhos.DataBind();

               }

           }

           protected void btnAdicionar_Click(object sender,EventArgs e)

           {

               ProdutoBLL produto = new ProdutoBLL();

               PRODUTO pro = new PRODUTO();

               DataTable tbDadosSession = new DataTable();

               tbDadosSession = (DataTable)Session["TabelaDados"];

              string qtd = TextBox1.Text;

              pro.codprod = Convert.ToInt32(DDLproduto.SelectedValue);

              string nomeproduto = DDLproduto.SelectedItem.Text;

              string preco_prod = Convert.ToString(produto.preco_Produto(pro));

               Linha = tbDadosSession.NewRow();

               Linha["Código"] = pro.codprod;

               Linha["Produto"] = nomeproduto;

               Linha["Quantidade"] = qtd;

               Linha["Preço"] = preco_prod;

               tbDadosSession.Rows.Add(Linha);

               Session["TabelaDados"] = tbDadosSession;

               gridTamanhos.DataSource = tbDadosSession;

               gridTamanhos.DataBind();

               Session["contador"] = tbDadosSession.Rows.Count;

               TextBox1.Text = String.Empty;

               TextBox1.Focus();

           }

           public void carregaProduto()

           {

               ProdutoBLL produto = new ProdutoBLL();

               PRODUTO pro = new PRODUTO();

             

               DDLproduto.DataTextField = "nomeprod";

               DDLproduto.DataValueField = "codprod";

             

               DDLproduto.DataSource = produto.GetRegistro(pro);

               DDLproduto.DataBind();

              

           }

    No meu html eu tenho o link usado para o excluir o registro, o codigo segue abaixo:

    <htmlxmlns="http://www.w3.org/1999/xhtml">

    <headid="Head1" runat="server">

    <title>Adicionando linhas no GridView</title>

    </head>

    <body>

    <formid="form1" runat="server">

    <asp:GridView

    ID="gridTamanhos"

    runat="server"

    BorderColor="#00C000"

    BorderStyle="Inset"

    BorderWidth="1px"

    EmptyDataText="Sem dados para exibir..."

        onselectedindexchanged="gridTamanhos_SelectedIndexChanged"  Width="282px"

        onrowdeleted="gridTamanhos_RowDeleted"

        onrowcommand="gridTamanhos_RowCommand"

        onrowdeleting="gridTamanhos_RowDeleting">

        <Columns>

            <asp:TemplateFieldShowHeader="False">

                <ItemTemplate>

                    <asp:LinkButtonID="LIK_remove" runat="server" CausesValidation="false"

                   

                                               CommandName="Remover"

                       onclick="LIK_remove_Click"Text="Remover Item "></asp:LinkButton>

                </ItemTemplate>

            </asp:TemplateField>

          </Columns> 

    </asp:GridView>

       <asp:DropDownListrunat="server" AutoPostBack="True"

        Height="20px"Width="130px" ID="DDLproduto"

        OnSelectedIndexChanged="DDLestado_end_SelectedIndexChanged"></asp:DropDownList>

    <br/>

    <asp:TextBox

    ID="TextBox1"

    runat="server"/>

    <asp:Button

    ID="btnAdicionar"

    runat="server"

    OnClick="btnAdicionar_Click"

    Text="Adiconar"/>

    </form>

    </body>

    </html>

    Agradeço se alguem puder me dar uma dica de como resolver isso ou pelo menos um norte.

    vlw.



    quinta-feira, 10 de maio de 2012 11:45
  • Usa o método DataTable.Rows.Remove ou DataTable.Rows.RemoveAt

    thiagokoelho

    quinta-feira, 10 de maio de 2012 11:56
  • Rodrigo,

    Mesclei esta thread com a pergunta que vc fez no fórum de LINQ, pois não podemos ter perguntas duplicadas.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 10 de maio de 2012 12:00
    Moderador
  • Só mais uma duvida, eu criei este metodo mas como eu chamo ele pelo aspx? devo usar um selected index?

    sexta-feira, 11 de maio de 2012 00:52
  • Olá Rodrigo,

    Se vc observar, no seu código HTML tem um LinkButton chamado LIK_remove, ele tem um evento Click, que esta chamando o evento Lik_remove_Click.

    No caso, mude o nome do seu método para Lik_remove_Click e ele vai vincular tudo.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    sexta-feira, 11 de maio de 2012 00:59
    Moderador
  • Obrigado a todos pela ajuda, funcionou.

    segunda-feira, 14 de maio de 2012 00:18