2017-06-16 3 views
0

データテーブルに行を追加するフォームがあります。だから私は、データテーブルを作成します。NewRow()前の行を上書きするメソッド

DataTable vendas = new DataTable(); 

はその後をPage_Loadにそれが列を作成:

vendas.Columns.Add("Nome"); 
vendas.Columns.Add("Morada"); 
vendas.Columns.Add("Contribuinte"); 
vendas.Columns.Add("CC"); 
vendas.Columns.Add("Email"); 
vendas.Columns.Add("Agregado"); 
vendas.Columns.Add("Banco"); 
vendas.Columns.Add("IBAN"); 
vendas.Columns.Add("Produtos"); 

をそして提出フォーム(ボタンアクション)の内側には、新しい行としてフォームの値を追加し、それらを結合しGridViewのに:カントー何が起こっている

protected void x(object sender, EventArgs e) 
{ 
    DataRow venda = vendas.NewRow(); 
    venda["Nome"] = nomecliente; 
    venda["Morada"] = moradacliente; 
    venda["Contribuinte"] = contribuintecliente; 
    venda["CC"] = cccliente; 
    venda["Email"] = mailcliente; 
    venda["Agregado"] = agregadocliente; 
    venda["Banco"] = bancocliente; 
    venda["IBAN"] = ibancliente; 
    venda["Produtos"] = produtocliente; 

    vendas.Rows.Add(venda); 

    GridviewVendas.DataSource = vendas; 
    GridviewVendas.DataBind(); 
} 

は、この最後のメソッドを実行するたびに、それは代わりに新しいものを追加することで、前の行を上書きすることです。私は何か間違っているし、おそらくダムの間違いですが、私はそれを見ていないだけです。

編集:ここでは、すべてのことは、1である:

public partial class _Default : System.Web.UI.Page 
{ 
    public string nome; 
    public string planosaudeantigo; 
    public string valorplanosaudeantigo; 
    public string condicoesplanosaudeantigo; 
    public string stringagregadofamiliar; 
    public string nomecliente; 
    public string moradacliente; 
    public string contribuintecliente; 
    public string cccliente; 
    public string mailcliente; 
    public string agregadocliente; 
    public string bancocliente; 
    public string ibancliente; 
    public string produtocliente; 
    DataTable vendas = new DataTable(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     vendas.Columns.Add("Nome"); 
     vendas.Columns.Add("Morada"); 
     vendas.Columns.Add("Contribuinte"); 
     vendas.Columns.Add("CC"); 
     vendas.Columns.Add("Email"); 
     vendas.Columns.Add("Agregado"); 
     vendas.Columns.Add("Banco"); 
     vendas.Columns.Add("IBAN"); 
     vendas.Columns.Add("Produtos"); 
    } 

    protected void InserirVenda_Click(object sender, EventArgs e) 
    { 
     nomecliente = NomeCliente.Text; 
     moradacliente = MoradaCliente.Text; 
     contribuintecliente = ContribuinteCliente.Text; 
     cccliente = CCCliente.Text; 
     mailcliente = MailCliente.Text; 
     agregadocliente = AgregadoCliente.Text; 
     bancocliente = BancoCliente.Text; 
     ibancliente = IbanCliente.Text; 

     for (int i = 0; i < ProdutosCliente.Items.Count; i++) 
     { 
      if (ProdutosCliente.Items[i].Selected) 
      { 
       produtocliente += ProdutosCliente.Items[i].Value + ","; 
      } 
     } 

     DataRow venda = vendas.NewRow(); 
     venda["Nome"] = nomecliente; 
     venda["Morada"] = moradacliente; 
     venda["Contribuinte"] = contribuintecliente; 
     venda["CC"] = cccliente; 
     venda["Email"] = mailcliente; 
     venda["Agregado"] = agregadocliente; 
     venda["Banco"] = bancocliente; 
     venda["IBAN"] = ibancliente; 
     venda["Produtos"] = produtocliente; 

     vendas.Rows.Add(venda); 

     GridviewVendas.DataSource = vendas; 
     GridviewVendas.DataBind(); 

    } 
} 

答えて

0

あなたはこのようにそれを実行します。

protected void Page_Load(object sender, EventArgs e) 
{ 
    //check if it is a postback 
    if (!Page.IsPostBack) 
    { 
     //create a new table 
     DataTable vendas = new DataTable(); 

     //add some columns 
     vendas.Columns.Add("Nome"); 
     vendas.Columns.Add("Morada"); 

     //add the datatable to the viewstate 
     ViewState["vendas"] = vendas; 
    } 
    else 
    { 
     //check if the viewstate exits and cast it back to a datatable 
     if (ViewState["vendas"] != null) 
     { 
      vendas = ViewState["vendas"] as DataTable; 
     } 
    } 
} 

そして今、あなたはそれを試してみましたが、それは動作しますが、これは正しいですInserirVenda_Click

+0

の行を追加し続けることができます。私が変えた唯一の事は、私がページロードの外でDatatableを宣言していることです。助けてくれてありがとう – Mike3645

0

変数は、ポストバック間で永続化されません、あなたのDataTablePage_Loadたびに再初期化されます。

Session変数またはCookieを使用してデータを保持することができます。

関連する問題