Jump to content

Archived

This topic is now archived and is closed to further replies.

becker

Adicionar linhas em GridView-C#

Recommended Posts

Ai galera, saudações a todos....

 

Estou inciando o aprendizado em C# e estou com um pequeno problema (dããããããa)...

 

Imaginem a situação....

 

* - Quando carrego a pagina criou manualmente uma DataTable com uma linha em branco.

* - Após adicionar esse DataTable a DataSet eu preencho um GridView e o exibo na página.

* - Nesta mesma página tenho um ASPTextBox e um ASPButton os quais to tentando usa-los para adicionar linhas no GridView.

 

Bem a situação é essa....

 

Digito um texto no textbox e quando clico no botao desejo adicionar este novo conteúdo no DataTable e concequentemente no GriView.

Porém da forma que encotrei na web isso não ocorre...!!! Quando clico no Botao é adicionada uma nova linha, ou seja o Grid fica com duas linhas, e todas as outras vezes que eu clicar no Botao o conteúdo é adicionado naquela segunda linha criada "No primeiro clique no botao"....

 

Como faço para incrementar a inserção no grid????

 

Abaixo o Código do botao e do Page_Load!!! Obrigado a todos......Um abraço....

 

 

Do Page_Load

--------------------------------------

//Variáveis Publicas a todo o formulario....

DataTable tbDados = new DataTable();

DataSet dsDados = new DataSet();

DataColumn coluna;

DataRow Linha;

 

protected void Page_Load(object sender, EventArgs e)

{

coluna = new DataColumn();

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

coluna.ColumnName = "Tamanhos";

coluna.ReadOnly = false;

tbDados.Columns.Add(coluna);

 

coluna = new DataColumn();

coluna.DataType = System.Type.GetType("System.Boolean");

coluna.ColumnName = "Status";

coluna.ReadOnly = false;

tbDados.Columns.Add(coluna);

 

 

//Adicionando linhas

Linha = tbDados.NewRow();

Linha["Tamanhos"] = "";

Linha["Status"] = false;

tbDados.Rows.Add(Linha);

 

 

//dsDados = new DataSet();

dsDados.Tables.Add(tbDados);

 

gridTamanhos.DataSource = dsDados.Tables[0];

gridTamanhos.DataBind();

}

 

--------------------------------------

 

 

Do botao

-----------------------------------------------

protected void btnAdicionaNoGrid_Click(object sender, EventArgs e)

{

//Adicionando linhas

Linha = tbDados.NewRow();

Linha["Tamanhos"] = txAdicionaNoGrid.Text;

Linha["Status"] = false;

tbDados.Rows.Add(Linha);

 

 

//dsDados = new DataSet();

dsDados.Tables.Add(tbDados);

 

gridTamanhos.DataSource = dsDados.Tables[0];

gridTamanhos.DataBind();

}

Share this post


Link to post
Share on other sites

Bem, já que ninguém respondeu, ai vai a solução!!!!

 

Para tal tarefa é neceesário trabalhar com um DataTable em Sessão (Session).

 

Por exemplo:

 

Para enviar todos os registros que se encontram em uma DataTable para uma variável de sessão:

 

Session["MinhaDataTableDeSessao"] = MinhaDataTable;

 

------------------------------------------------------------------------------------------------------------------

 

Para recuperar os dados da variável de sessão é necessário realizar um casting do objeto Session:

 

DataTable MinhaTabela = New DataTable();

 

MinhaTabela = (DataTable)Session["MinhaDataTableDeSessao"];

 

 

//Digamos que tenho um GridView no webForm e chamo ele de MeuGrid.

 

//Para popular o gridview MeuGrid

 

MeuGrid.DataSource = MinhaTabela;

MeuGrid.DataBind();

 

------------------------------------------------------------------------------------------------------------------

 

 

É isso ai...

 

Qualquer dúvida sobre este post me escrevam (beckeronline@hotmail.com)

Share this post


Link to post
Share on other sites

Após receber muitos emails com dúvidas de como trabalhar com datatable em sessão deixo neste post um exemplo completo.

É muito simples, basta copiar e colar este código em seu arquivo.aspx não tem erro, ta funcionando 100%...........

 

o Arquivo dataset.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="dataset.aspx.cs" Inherits="dataset" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

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

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

</asp:GridView>

<br />

<asp:TextBox

ID="TextBox1"

runat="server" />

<asp:Button

ID="btnAdicionar"

runat="server"

OnClick="btnAdicionar_Click"

Text="Adiconar" />

</form>

</body>

</html>

 

---------------------------------------------------------------------------------------

 

O arquivo dataset.aspx.cs

 

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

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

{

DataRow Linha;

 

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

DataTable tbDados;

DataColumn Coluna;

Session["contador"] = 0;

 

tbDados = new DataTable();

Coluna = new DataColumn();

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

Coluna.ColumnName = "IdDados";

tbDados.Columns.Add(Coluna);

 

Coluna = new DataColumn();

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

Coluna.ColumnName = "Tamanhos";

tbDados.Columns.Add(Coluna);

 

Session["TabelaDados"] = tbDados;

 

gridTamanhos.DataSource = tbDados;

gridTamanhos.DataBind();

}

}

protected void btnAdicionar_Click(object sender, EventArgs e)

{

DataTable tbDadosSession = new DataTable();

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

string conteudoTextBox = TextBox1.Text;

 

Linha = tbDadosSession.NewRow();

Linha["idDados"] = Convert.ToInt32(Session["contador"]) + 1;

Linha["Tamanhos"] = conteudoTextBox;

tbDadosSession.Rows.Add(Linha);

 

Session["TabelaDados"] = tbDadosSession;

gridTamanhos.DataSource = tbDadosSession;

gridTamanhos.DataBind();

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

TextBox1.Text = String.Empty;

TextBox1.Focus();

}

}

 

 

Sucesso a todos!!!

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.