private void RolesBind()
    {
        string[] roles = Roles.GetAllRoles();
        gvwRoles.DataSource = roles;
        gvwRoles.DataKeyNames = roles;
        gvwRoles.DataBind();
       
    }
请教为什么DataKeyNames会错?应该怎么改呢?

解决方案 »

  1.   

    GridView1.DataKeyNames = new string[] {"ID"}; 
      

  2.   

    DataKeyNames应该是string吧,字段名称,比如你可以指定"RoleID",也可以指定多个字段
      

  3.   


    楼上正解,DataKeyNames 指定的是列名,字段属性名之类的名称,并不是直接的数据源
      

  4.   

    问题是我绑定的是一个数组(使用的是.net的成员资格),用来显示角色的名称,而我想将它的DataKeyNames设为数组的名称,好让我使用Gridview1.DataKeys[e.RowIndex].Value.ToString()返回某行的角色名,再通过Roles.DeleteRole()方法删除该角色
      

  5.   

    应该是角色ID,不是角色名。GridView1.DataKeyNames = new string[] {"ID"};
    把这个ID改成你角色的ID字段就可以了。
      

  6.   


    这样添加GridView1.DataKeyNames = new string[] {"ID1","ID2","ID3"}; 取值的时候
    Gridview1.DataKeys[e.RowIndex].Values[0].ToString(); //ID1
    Gridview1.DataKeys[e.RowIndex].Values[1].ToString(); //ID2
    Gridview1.DataKeys[e.RowIndex].Values[2].ToString(); //ID3
    以此类推