首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于DataTable存储数据的有关问题请问

2013-03-25 
关于DataTable存储数据的问题请教本帖最后由 carrotgirl2008 于 2013-03-21 18:06:19 编辑应客户要求,需要

关于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 * FROM TABLE");
            while (dr.Read())


            {
              DRow = DTable.NewRow();
              myDataRowCollection = DTable.Rows;
              DRow[0] = (dr["id"].ToString());
              DRow[1] = (dr["lpname"].ToString());
              DTable.Rows.Add(DRow); 

              BindGrid1();
            }
            dr.Close();
        }

        //删除行
        public void Grid_Delete(object Sender, DataGridCommandEventArgs E)
        {
            ...
        }
   
        //编辑行
        public void Grid_Edit(object Sender, DataGridCommandEventArgs E)
        {
            ...
        }

        //更新行
        public void Grid_Update(object Sender, DataGridCommandEventArgs E)
        {
            ...
        }

         datatable
[解决办法]
从数据库里取数据出来,然后放在缓存里,
然后用户表里的数据从这个缓存表里copy出来

  string strTableName = "Subtable" + this.Session["userid"].ToString();
                 DTable =dtCache.Copy(); //dtCache是缓存里的数据
                 DTable.TableName=strTableName;
 

热点排行