becker 0 Denunciar post Postado Março 1, 2007 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(); } Compartilhar este post Link para o post Compartilhar em outros sites
becker 0 Denunciar post Postado Março 20, 2007 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) Compartilhar este post Link para o post Compartilhar em outros sites
becker 0 Denunciar post Postado Junho 4, 2007 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!!! Compartilhar este post Link para o post Compartilhar em outros sites