Usuário com melhor resposta
remover itens de um datatable

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.
- Editado Rodrigo_cpe quinta-feira, 10 de maio de 2012 01:46
- Movido Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator quinta-feira, 10 de maio de 2012 11:55 Melhor adequado ao tema (De:Language Integrated Query - LINQ)
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- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 11 de maio de 2012 10:02
- Marcado como Resposta Rodrigo_cpe segunda-feira, 14 de maio de 2012 00:17
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- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 10 de maio de 2012 21:00
-
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.
- Mesclado Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator quinta-feira, 10 de maio de 2012 11:54 Mesmo conteúdo.
-
-
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 -
-
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- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 11 de maio de 2012 10:02
- Marcado como Resposta Rodrigo_cpe segunda-feira, 14 de maio de 2012 00:17
-