当前位置:编程学习 > C#/ASP.NET >>

奇怪的问题,同时执行时数据出错!求助~!附源码

 protected void Page_Load(object sender, EventArgs e)
    {
       if (UserID == "" || Session["UserID"] == null || Session["UserID"].ToString() == "")
        {
            UserID = "";
            Parent.Page.Response.Redirect("../index.aspx", true);
        }

        if (!IsPostBack)
        {
           
            Ck_Date = ""; Dep_ID = ""; user_id = ""; Dep_Class = "";
          
            btn4_text = "init"; btnid = "";
            Fill_Year();
            Fill_Month();

            Panel2.Visible = false; Panel3.Visible = false; Panel4.Visible = false;
         
      
            Fill_dep();//填充部门列表
              
        }

        Dep_ID = drp_dep.SelectedValue;    //部门ID     
        string str = Drp_year.SelectedValue + "-" + Drp_month.SelectedValue + "-1";  
        Ck_Date = Convert.ToDateTime(str).ToString();          //年月赋值

     
        Fill_Table();//主统计表   
  

    } 

protected void Fill_Table()//填充部门巡视统计表
    {
        //AjaxMessage.Show(UpdatePanel1, this, drp_dep.SelectedItem.Text.Trim()); return;
        Table1.Rows.Clear();
        TableRow tr;
        TableHeaderCell th;
        TableCell tc;
        tr = new TableRow();
        #region 表格头部
      
        th = new TableHeaderCell();

       
        th.Text = drp_dep.SelectedItem.Text + " 巡视统计表(" + Convert.ToDateTime(Ck_Date).Year.ToString() + "年" + Convert.ToDateTime(Ck_Date).Month.ToString() + "月份)";
        th.ColumnSpan = 8;
        tr.Cells.Add(th);
        Table1.Rows.Add(tr);
      

        tr = new TableRow();
        th = new TableHeaderCell();
        th.Text = "ID";//0
        tr.Cells.Add(th);

        th = new TableHeaderCell();
        th.Text = "姓名";//1
        tr.Cells.Add(th);

        th = new TableHeaderCell();
        th.Text = "职务";//3
        tr.Cells.Add(th);

        th = new TableHeaderCell();
        th.Text = "岗点";//4
        tr.Cells.Add(th);

        th = new TableHeaderCell();
        th.Text = "检查点";//5
        tr.Cells.Add(th);

        th = new TableHeaderCell();
        th.Text = "夜班";//6
        tr.Cells.Add(th);

        th = new TableHeaderCell();
        th.Text = "白班";//
        tr.Cells.Add(th);

        th = new TableHeaderCell();
        th.Text = "作业数量";//8
        tr.Cells.Add(th);

        Table1.Rows.Add(tr);
        #endregion
        DataSet dst;
        if (Dep_ID != "全部")
        {
            dst = DBCommand.ExecuteDataSet("select ID,UserName from tb_user where (Ex_List=2 or Ex_List=3) AND ID_ks  = " + Dep_ID, "tab1");
            
        }
        else
        {
            dst = DBCommand.ExecuteDataSet("select ID,UserName from tb_user where (Ex_List=2 or Ex_List=3) AND ID>4", "tab1");  
        }
        int nums = dst.Tables[0].Rows.Count;

        SqlConnection conn = DBConnection.CreateConnection();
        SqlCommand cmd1 = new SqlCommand("", conn);

        LinkButton lkbtn; string lx_nums = "";
        for (int i = 0; i < nums; i++)
        {
            user_id = dst.Tables[0].Rows[i]["ID"].ToString();
            tr = new TableRow();
            tr.HorizontalAlign = HorizontalAlign.Center;

            #region 填充表格内容

            tc = new TableCell(); tc.Text = user_id; tr.Cells.Add(tc); //ID
            tc = new TableCell(); tc.Text = dst.Tables[0].Rows[i]["UserName"].ToString(); tr.Cells.Add(tc);//姓名          

            tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "B" + user_id;
            lx_nums = Get_Date2(user_id, cmd1);   //***********根据get_date2获取此人的作业次数,以下同
            lkbtn.Text = lx_nums + "次";
            if (Convert.ToInt32(lx_nums) < LX.Get_Num2(Dep_ID))//*************没有达到指标显示红色
            {
                lkbtn.ForeColor = System.Drawing.Color.Red;
                tc.ForeColor = System.Drawing.Color.Red;
            }
            lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);


            tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "C" + user_id;
            lx_nums = Get_Date3(user_id, cmd1);
            lkbtn.Text = lx_nums + "次";
            if (Convert.ToInt32(lx_nums) < LX.Get_Num3(Dep_ID))
            {
                lkbtn.ForeColor = System.Drawing.Color.Red;
                tc.ForeColor = System.Drawing.Color.Red;
            }
            lkbtn.Text = lx_nums + "次";
            lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);


            tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "D" + user_id;
            lx_nums = Get_Date4(user_id, cmd1);
            lkbtn.Text = lx_nums + "次";
            if (Convert.ToInt32(lx_nums) < LX.Get_Num4(Dep_ID))
            {
                lkbtn.ForeColor = System.Drawing.Color.Red;
                tc.ForeColor = System.Drawing.Color.Red;
            }
            lkbtn.Text = lx_nums + "次";
            lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);

            tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "E" + user_id;
            lx_nums = Get_Date5(user_id, cmd1);
            lkbtn.Text = lx_nums + "次";
            if (Convert.ToInt32(lx_nums) < LX.Get_Num5(Dep_ID))
            {
                lkbtn.ForeColor = System.Drawing.Color.Red;
                tc.ForeColor = System.Drawing.Color.Red;
            }
            lkbtn.Text = lx_nums + "次";
            lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);

            tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "G" + user_id;       
            lx_nums = Get_Date7(user_id, cmd1);
            lkbtn.Text = lx_nums + "次";
           
            lkbtn.Text = lx_nums + "次";
            lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);

            tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "F" + user_id;
            lx_nums = Get_Date6(user_id, cmd1);
            lkbtn.Text = lx_nums + "次";
            if (Convert.ToInt32(lx_nums) < LX.Get_Num6(Dep_ID))
            {
                lkbtn.ForeColor = System.Drawing.Color.Red;
                tc.ForeColor = System.Drawing.Color.Red;
            }
            lkbtn.Text = lx_nums + "次";
            lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);

            #endregion
            Table1.Rows.Add(tr);
        }
        cmd1.Dispose(); conn.Close(); conn.Dispose(); dst.Dispose();
    }


说明:在切换drp_dep(部门)时,单机切换得到的数据总是对的,但当有两台机器同时查询,并“同时”切换不同部门时,数据出现了交叉,比如说A机器查询AD部门,B机器查询BD部门,A的正确结果一部门到了B查询结果,B的正确结果一部门到了A,一行六个数据有四五个数据都交叉了,不知道为什么,就是只要同时切换部门,数据就交叉 --------------------编程问答-------------------- 累加读取重复数据了吧!你开俩个IE DEBUG一下就知道问题了! --------------------编程问答-------------------- 应该不是累加读取的问题,user_id这个数据也有交叉的,就是说得到的表格数据和实际是不一致的,A切换部门后得到了B机器的数据,B得到了A机器的数据 --------------------编程问答-------------------- 建议用ds和dt一次性读入数据后在内存中操作试试   --------------------编程问答-------------------- 请问楼上的,怎么样一次性读入啊,我现在有点懵 --------------------编程问答-------------------- 忘记说了有一点,得到结果的数据中(就是产生交叉的数据)基本上都是随机读取数据库汇总而来,不是直接读数据表中的数据,lx_nums是读取数据库中的记录汇总得到的,这个数据有交叉,还有就是user_id是数据库表中的数据奇怪也交叉了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,