现用户有一数据表格如下:id 书名 价格 操作1 A 10 选择2 b 28 选择3 c 39 选择从库中选出如上表格中数据,点“选择”,出现填写订购信息输入框等,要求得到书的ID号,并和订购信息一并存入数据库中,单人操作时没有问题,可以得到ID,存储一切正常,但当两个人同时运行这个程序时,ID就总是取到最后点击book_Click的那个ID,比如A先进入book.aspx,并点击了ID为1的书,这时B也在另外一台机器上点击进入book.aspx,点击选择ID为2的BOOK,这时如果A填写完了订购信息,点击保存,存入库中的是ID为2的书,A用户应该选择的是ID=1,显然系统取的是最后一次点击book_click取到的值,为什么呢?请大侠赐教?代码如下:protected void fill_tb(){Table2.Rows.Clear(); TableRow tr; TableHeaderCell th; TableCell tc;#region 填充表头tr = new TableRow();th = new TableHeaderCell();th.Text = "ID";tr.Cells.Add(th);th = new TableHeaderCell();th.Text = "书名";tr.Cells.Add(th);th = new TableHeaderCell();th.Text = "价格";tr.Cells.Add(th);th = new TableHeaderCell();th.Text = "操作";tr.Cells.Add(th);Table2.Rows.Add(tr);#endregionstring sql ="select id,bookname,price from book ";DataSet dst = DBCommand.ExecuteDataSet(sql, "tab");int nums = dst.Tables[0].Rows.Count;for (int i = 0; i < nums; i++){#region 数据行tr = new TableRow();tr.HorizontalAlign = HorizontalAlign.Center;tc = new TableCell();tc.Text = dst.Tables[0].Rows[i]["id"].ToString();tr.Cells.Add(tc);//tc = new TableCell();tc.Text = dst.Tables[0].Rows[i]["bookname"].ToString();tr.Cells.Add(tc);//作业项目tc = new TableCell();tc.Text = dst.Tables[0].Rows[i]["price"].ToString();tr.Cells.Add(tc);//责任人tc = new TableCell();LinkButton lkbtn = new LinkButton();lkbtn.ID = dst.Tables[0].Rows[i]["id"].ToString();lkbtn.Text = "操 作";lkbtn.Click += new EventHandler(book_Click);tc.Controls.Add(lkbtn);tr.Cells.Add(tc);Table2.Rows.Add(tr);#endregion}dst.Dispose();}protected void book_Click(object sender, EventArgs e) //点击事件{LinkButton btn = sender as LinkButton;bookid=Convert.ToInt32(btn.ID.ToString());Fill_db();//显示详单}
2 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
1:第一种可能,你测试的二个页面是同一种浏览器打开的,比如IE,这样二个页面的会话是同一会话,不论操作什么,都是取最后一次的值
2:第二种可能
bookid=Convert.ToInt32(btn.ID.ToString());
这个booid从哪里定义的?
添加回答
举报
0/150
提交
取消
