myID myName myPwd myAge 
编辑 删除 1 no1 111 24 
编辑 删除 2 no2 222 52 
编辑 删除 3 no3 333 34 
编辑 删除 4 no4 444 23 
编辑 删除 5 no5 555 52 
编辑 删除 6 no6 666 62 
编辑 删除 7 no7 777 34 
编辑 删除 8 no8 888 23 
编辑 删除 9 no9 999 43 
编辑 删除 10 no10 1000 13 private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
SqlConnection myCon=new SqlConnection("workstation id=WING;packet size=4096;user id=sa;data source=WING;persist security info=False;initial catalog=WingZero");
SqlCommand myCmd=new SqlCommand("delete from myTable_1 where myID=@myID",myCon);
myCmd.Parameters.Add(new SqlParameter("@myID",SqlDbType.Int,4));
myCmd.Parameters["@myID"].Value=????? myCon.Open();
myCmd.ExecuteNonQuery();
myCon.Close();
DataBind();
我只是想删除行时先获取 myID 的值,好传递给@myID,然后删除,
书上的 
myCmd.Parameters["@myID"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
老报错

解决方案 »

  1.   

    string cellText = DataGrid1[x,y].ToString();
      

  2.   

    如果你在网格单元格中增加了控件,并且把文本写到控件上,可以这样
    string cellText = DataGrid1[x,y].Controls[0].ToString();一般的绑定用
    string cellText = DataGrid1[x,y].ToString();
      

  3.   

    ...
    试过后
    打datagrid1后都没反映。。
    myCmd.Parameters["@myID"].Value=DataGrid1[x,y]
      

  4.   

    修改为:
    myCmd.Parameters["@myID"].Value = Convert.ToInt32(DataGrid1.DataKeys[(int)e.Item.ItemIndex]);
      

  5.   

    myCmd.Parameters["@myID"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
    上述这句,是求取datagrid的主键值
    为了得到这个值,你必须在该控件绑定的时候,指定它的主键字段
    this.DataGrid1.DataKeyField = "myID";
      

  6.   

    我没写绑定,可以这样么?
    private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    this.DataGrid1.DataKeyField = "myID";
    SqlConnection myCon=new SqlConnection("workstation id=WING;packet size=4096;user id=sa;data source=WING;persist security info=False;initial catalog=WingZero");
    SqlCommand myCmd=new SqlCommand("delete from myTable_1 where myID=@myID",myCon);
    myCmd.Parameters.Add(new SqlParameter("@myID",SqlDbType.Char,4));
    int y=Convert.ToInt32(DataGrid1.DataKeys[(int)e.Item.ItemIndex]);
    myCmd.Parameters["@myID"].Value = Convert.ToInt32(DataGrid1.DataKeys[(int)e.Item.ItemIndex]);
    myCon.Open();
    myCmd.ExecuteNonQuery();
    myCon.Close();
    DataBind();
    }出错:索引超出范围。必须为非负值并小于集合大小。参数名: index
      

  7.   

    错了,因为我的datagird1 里的数据是通过 web服务传入的web服务也只是调用了存储过程,就是  分了层的结构,
    这种情况下的增加删除怎么实现?