public bool ecadabindinfostring(GridView gv,string sqlstr5,string DNK)
    {
        SqlConnection con = this.getcon();
        con.Open();
        SqlDataAdapter mydataadapter = new SqlDataAdapter(sqlstr5,con);
        DataSet mydataset = new DataSet();
        mydataadapter.Fill(mydataset);
        gv.DataSource=mydataset;
        gv.DataKeyNames = new string[] { DNK };
        try
        {
            gv.DataBind();
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            con.Close();
        }
    }
dataconn.ecadabindinfostring(gvAdminInfo, "select * from tb_Administrator ORDER BY ID DESC", "ID");下面可以读出ID字段
string MasterID = this.gvAdminInfo.DataKeys[e.RowIndex][0].ToString();
下面这行读不出第二个字段
string MasterPwd = this.gvAdminInfo.DataKeys[e.RowIndex][1].ToString();
为什么呢

解决方案 »

  1.   

    你的DataKeys 只设定了一个?gv.DataKeyNames = new string[] { DNK };
      

  2.   

    我在gridview里设了四个字段,gv.DataKeyNames = new string[] { DNK };设了一个主键,除了主键,其它的字段都没办法用string MasterPwd = this.gvAdminInfo.DataKeys[e.RowIndex][1].ToString();
    读出来
      

  3.   

    dataconn.ecadabindinfostring(gvAdminInfo, "select * from tb_Administrator ORDER BY ID DESC", "ID");
      

  4.   

    GridView1.DataKeys[e.RowIndex].ValueDataKeyNames="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(); 
      

  5.   

    dataconn.ecadabindinfostring(gvAdminInfo, "select * from tb_Administrator ORDER BY ID DESC", "ID,Name,PWD");这样写进去出错啊