我双击datagrid中某一行,弹出一个更新被点击这一行的更新信息页面,现在的问题是如果我工资表中的某一个编号有二个以上(发工资的时间不同)那么当我双击相同编号的任何一行,那么弹出来的框框中取出的值始终是这个相同号码的第一个,取其它的值都正常,更新也更新得起。有什么办法可以解决啊?比如我查询出来的行数有:(该表有二个主键,一是编号,二是时间。)
编号      工资     工资     时间
2001001  20元      20元     2001-1-1
2001002  20元      20元     2001-1-1
2001002  30元      30元     2001-9-9
2001002   20        1       2001-5-5
2001003   20        41      2001-7-7
如果我双击2001001 与 2001003 取出的值就是正常的,也可以更新
如果我双击2001002,不管是上面三条中那一条,取出的值都是2001002  20元      20元     2001-1-1
并且更新也更新不了?有什么办法呢?? //循环对表格行做脚本,点击弹出新窗口
int i=0;
int mycount = DataGrid1.Items.Count;
string ygid = "";
for(i=0;i<mycount;i++)
{
ygid = DataGrid1.DataKeys[i].ToString();

DataGrid1.Items[i].Attributes.Add("ondblclick","window.open('updatawage.aspx?ygid=" + ygid + "','','');");//双击响应

解决方案 »

  1.   

    “编号”不是你表中的主键,不要按编号取记录,按你的唯一主键来取。如果要在这个基础上简单的改法是在后面再加一列放你的主键,然后Visible=false就可以了。
    然后判断某条记录被双击的时候,不要用“编号”,用那个隐藏的列的值。就是说把DataKeys设成那个隐藏的列。
      

  2.   

    在循环的时候把时间值也取出来.
    string mydate = "";
    for(i=0;i<mycount;i++)
    {
    ygid = DataGrid1.DataKeys[i].ToString();
    mydate = DataGrid1.Items[i].Cells[n].Text;
    DataGrid1.Items[i].Attributes.Add("ondblclick","window.open('updatawage.aspx?ygid=" + ygid + "&mydate=" + mydate + "','','');");//双击响应