我在页面内定义全局变量:一个datatable和2个datarowPublic Dtt As New DataTable
Public dc As New DataColumn
Public dc2 As New DataColumn页面内有2个checkbox控件(cb1,cb2)和一个datagrid(dg1)控件
在cb1被check时执行
dc.ColumnName = ("标题")
Dtt.Columns.Add(dc)
dc2.ColumnName = ("地址")
Dtt.Columns.Add(dc2)
Dim dr As DataRow
dr = Dtt.NewRow
dr("标题") = "标题A"
dr("地址") = "地址A"
Dtt.Rows.Add(dr)
dg1.DataSource = Dtt
dg1.DataBind()在cb2被check时执行
dc.ColumnName = ("标题")
Dtt.Columns.Add(dc)
dc2.ColumnName = ("地址")
Dtt.Columns.Add(dc2)
Dim dr As DataRow
dr = Dtt.NewRow
dr("标题") = "标题B"
dr("地址") = "地址B"
Dtt.Rows.Add(dr)
dg1.DataSource = Dtt
dg1.DataBind()问题是为什么2个checkbox都选中时datagrid里只有一条记录那

解决方案 »

  1.   

    dg1.DataSource = Dtt
    dg1.DataBind()
    只在一个地方用,删除一个
      

  2.   

    因为你每次页面载入都重新创建了一个 datatable对象.
      

  3.   

    那怎样弄一个只产生一次的datatable呢,在哪个位置定义
      

  4.   

    你改成vb的using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace _2003
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.TextBox TextBox1;
    protected  DataTable Dtt   ;
     
    protected System.Web.UI.WebControls.CheckBox CheckBox1;
    protected System.Web.UI.WebControls.CheckBox CheckBox2;
    protected System.Web.UI.WebControls.DataGrid dg1;
     
    private void Page_Load(object sender, System.EventArgs e)
    {

    if(!this.IsPostBack || ViewState["dt"] == null )
    {
    Dtt = new DataTable();
    Dtt.Columns.Add("标题");
    Dtt.Columns.Add("地址");
    ViewState["dt"] = Dtt;
    }
    else
    {
    Dtt =  (DataTable) ViewState["dt"];
    }
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.CheckBox1.CheckedChanged += new System.EventHandler(this.CheckBox1_CheckedChanged);
    this.CheckBox2.CheckedChanged += new System.EventHandler(this.CheckBox2_CheckedChanged);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void CheckBox1_CheckedChanged(object sender, System.EventArgs e)
    {
    if(CheckBox1.Checked)
    {
    DataRow dr = Dtt.NewRow();
    dr["标题"] = "标题A";
    dr["地址"] = "地址A";
    Dtt.Rows.Add(dr);
    }
    else
    {
    DataRow[] rows = Dtt.Select("标题='标题A'");
    if(rows.Length == 1)
    {
    Dtt.Rows.Remove(rows[0]);
    }
    }
    dg1.DataSource = Dtt;
    dg1.DataBind();
    } private void CheckBox2_CheckedChanged(object sender, System.EventArgs e)
    {
    if(CheckBox2.Checked)
    {
    DataRow dr = Dtt.NewRow();
    dr["标题"] = "标题B";
    dr["地址"] = "地址B";
    Dtt.Rows.Add(dr);
    }
    else
    {
    DataRow[] rows = Dtt.Select("标题='标题B'");
    if(rows.Length == 1)
    {
    Dtt.Rows.Remove(rows[0]);
    }
    }
    dg1.DataSource = Dtt;
    dg1.DataBind();
    }
    }
    }