由于一些原因我要在GridView的行中加2个删除列,2个删除对应的功能是不同的,关联了两张表,所以设置了2个DataKeyNames,分别对应2个删除列,
我想问的是如何获取我点的这个删除列的DataKeyNames?不是它对应的值,请问怎么实现?

解决方案 »

  1.   

    DataKeyNames="ID1,ID2"
    GridView1.DataKeys[e.Row.RowIndex].Values[0].ToString();
    GridView1.DataKeys[e.Row.RowIndex].Values[1].ToString();
    或者
    GridView1.DataKeys[e.Row.RowIndex].Values["ID1"].ToString();
    GridView1.DataKeys[e.Row.RowIndex].Values["ID2"].ToString(); 
    遍历gridview获取每行主键
      

  2.   

    好像好像,如果如楼上所说:ID1,ID2必须是主键
    datasource.tabled[0].primarykeys = new datacolumns[]{...ID1, ...ID2};
      

  3.   

    ID1和ID2组合起来不重复就行了
      

  4.   

    DataKeyNames="ID1,ID2" 
    GridView1.DataKeys[e.Row.RowIndex].Values[0].ToString(); 
    GridView1.DataKeys[e.Row.RowIndex].Values[1].ToString(); 
    或者 
    GridView1.DataKeys[e.Row.RowIndex].Values["ID1"].ToString(); 
    GridView1.DataKeys[e.Row.RowIndex].Values["ID2"].ToString(); 
    遍历gridview获取每行主键
    可行!!!!!!!!!
      

  5.   


    DataKeyNames 可以是一个数组GridView1.DataKeys[e.Row.RowIndex].Values[0].ToString(); 
    GridView1.DataKeys[e.Row.RowIndex].Values[1].ToString(); 顶
      

  6.   

    支持这种观点,原因是DataKeyNames可以是一个数组
    如 GRIDVIEW。DATAKEYNAMES=NEW STRING[] {“1”,“2”};
      

  7.   

    GridView1.DataKeyNames[0]
    GridView1.DataKeyNames[1]
    楼主说不是要值,是不是就是列名啊,呵呵,如果是的话用这个吧。
      

  8.   

    可能我没说清楚,用的是GridView绑定SqlDataSource,一行中的两个删除列都是采用CommandName=“Delete”的方式,只是分别绑定两个DataKey,所以点击他们调用的Delete方法都是一样的,
    两个主键对应的值都会作为参数传递到Delete方法中,我Delete方法用的是存储过程,加了第3个参数@Type来判断到底点的是哪个删除列,光是两个主键值断定不了