行 189: SqlCommand cmd=new SqlCommand("select * from ss where id=@id",con);
行 190: SqlParameter id=cmd.Parameters.Add("@id",SqlDbType.Int);
行 191: id.Value=this.DataGrid1.DataKeys[(int)e.Item.ItemIndex];
行 192: SqlDataReader sdr=cmd.ExecuteReader();
行 193: while(sdr.Read())怎么解决呀?
大虾们多帮忙啊,我是新手

解决方案 »

  1.   

    e.Item.ItemIndex 可能是 -1
      

  2.   

    if(e.Item.ItemIndex>-1)
    {
          .......
          .......
    }
      

  3.   

    楼主的e.Item.ItemIndex应该是等于-1吧
      

  4.   

    if(e.CommandName=="Detail")
    {
       if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
    {
      while(e.Item.ItemIndex>-1)
      {
    SqlConnection con =new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    con.Open();
    SqlCommand cmd=new SqlCommand("select * from ss where id=@id",con);
    SqlParameter id=cmd.Parameters.Add("@id",SqlDbType.Int);
    id.Value=this.DataGrid1.DataKeys[(int)e.Item.ItemIndex];
    SqlDataReader sdr=cmd.ExecuteReader();
    while(sdr.Read())
    {
    txbName.Text      =sdr.GetString(1);
    txbAge.Text       =sdr.GetInt32(2).ToString();
    txbAddress.Text   =sdr.GetString(3);
    txbPhone.Text     =sdr.GetInt32(4).ToString();
    txbbirthday.Text  =sdr.GetDateTime(5).ToShortDateString();
    txbid.Text        =sdr.GetInt32(0).ToString();

    }
      }
    }
    }
      

  5.   

    判断e.Item.ItemIndex的值以后再对其操作。
      

  6.   

    id.Value=this.DataGrid1.DataKeys[(int)e.Item.ItemIndex];
    跟踪下程序到了这里的时候ITEM是多少?