日期:2014-05-17  浏览次数:20600 次

关于DataTable存储数据的问题请教
本帖最后由 carrotgirl2008 于 2013-03-21 18:06:19 编辑
应客户要求,需要在一个生成费用的页面中,同时生成多个DataTable表,这些DataTable表的表结构是相同的,但是希望不同人员可以操作不同的DataTable表,不能相互影响。

我的想法是:表名可以根据每个生成人员的登录ID来动态为DataTable表来命名,如“Subtable+用户ID”,如下红色代码,但是当多人同时生成数据时,后面一个人生成的数据总是会覆盖前面那个人的数据,找了好久也没发现问题在哪,还请高手能指点一下。谢谢了

        static DataTable DTable;
        public void Page_Load(object Sender, EventArgs E)
        {
            if (!IsPostBack)
            { 
                string strTableName = "Subtable" + this.Session["userid"].ToString();
                DTable = new DataTable(strTableName);
            }


            //临时表
            if (DTable.Columns.Count == 0)
            {
                DTable.Columns.Add("id", System.Type.GetType("System.Int32"));
                DTable.Columns.Add("name", System.Type.GetType("System.String"));
                DataColumn[] thekey = { DTable.Columns["id"] };
                DTable.PrimaryKey = thekey;
                
                BindGrid1();
            }
        }

        //为DataGrid赋值
        public void BindGrid1()
        {
            DataGrid2.DataSource = DTable;
            DataGrid2.DataBind();
        }

        //生成数据
        public void Action_Click(object Sender, EventArgs E)
        {
            DTable.Rows.Clear();

            DataRowCollection myDataRowCollection = default(DataRowCollection);
            DataRow DRow = default(DataRow);
            
            Socut.Reader dr = new Socut.Reader("SELECT