大家好,小弟请教2个问题:
 1:点击显示在DataGrid中的一条纪录的编辑按钮,如何打开另一个Web窗体,当然需要把该条记录  的ID传递给这个窗体.
 2:点击显示在DataGrid中的一条纪录的删除按钮,如何删除该条记录?第一个问题,我可以打开另一个窗体,但是ID不知道怎么传递:
   private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = e.Item.ItemIndex;
string strID = DataGrid1.EditItemIndex.ToString();//是否是待传
string ur1 = "WebForm2.aspx";        输的纪录ID,该如
Response.Redirect(ur1);            何传过去?
} 第二个问题,我删除纪录的程序如下:但老提示"Invalid operation,The connection is closed"
        private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int rowToDel = e.Item.ItemIndex;
string SQL_DEL = "DELETE FROM T_COMPANYINF WHERE T_DH_ID 
                                    = "+"'"+rowToDel+"'";
OracleConnection conn = new OracleConnection(ConnectionString);
OracleCommand command = new OracleCommand();
command.CommandText = SQL_DEL;
conn.Open();
command.ExecuteNonQuery();
conn.Close();
DataGrid1.DataBind();  //数据重新显示了一次
}                          还得麻烦大家不吝赐教阿!

解决方案 »

  1.   

    第一个问题可以这样传吗? 你可以用session变量传过去撒第二个问题string SQL_DEL = "DELETE FROM T_COMPANYINF WHERE T_DH_ID 
                                        = "+"'"+rowToDel+"'";
    应该写成 string SQL_DEL = "DELETE FROM T_COMPANYINF WHERE T_DH_ID 
                                        = '" + rowToDel + "'";
      

  2.   

    谢谢 wangxueyan 你的回答.
    我在点击编辑按钮的时候是这样传输的:
      private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid1.EditItemIndex = e.Item.ItemIndex;
    string strID = DataGrid1.EditItemIndex.ToString();
    string ur1 = "WebForm2.aspx?strID = "+strID;//待传记录ID
    Response.Redirect(ur1);

    不知道可以嘛?
      

  3.   

    还有就是点击删除按钮的时候,老提示"Invalid operation,The connection is closed"这个错误
      

  4.   

    建议你直接利用弹出窗口来弄第一个js的showmodaldialog方法,然后带个url参数
    第二个
    OracleConnection conn = new OracleConnection(ConnectionString);
    OracleCommand command = new OracleCommand();
    command.CommandText = SQL_DEL;
    conn.Open();
    command.ExecuteNonQuery();
    conn.Close();
    DataGrid1.DataBind(); 这段语句劝你改下
    最后一句绑定换成重新查询数据库,然后再绑定!
      

  5.   

    而且你的错误很明显The connection is closed就是说你的数据连接关闭了!
    OracleConnection conn = new OracleConnection(ConnectionString);
    OracleCommand command = new OracleCommand();
    try
    {
    command.CommandText = SQL_DEL;
    conn.Open();
    command.ExecuteNonQuery();
                      重新查询数据库得到一个数据集
                      将该数据集赋值给datagrid
                      然后再databind();
    }
    catch{  提示错误 ;}
    finally
       {
    conn.Close();
       }
      

  6.   

    LZ:
    第一个问题:Response.write("<script>window.open('"+url+"');</script>");
    第二个问题:是没有重新绑定
                需要重新select得到数据集
      

  7.   

    再请教大家一个问题:
        在ASP.NET中,如何将DataGrid中显示的记录,在点击其中一条记录的时候,取到它的一个子段值呢?(比如 t_id 字段)
        我写的这个好像只取道的是第几条记录,而不是字段值:
            private void DataGrid1_EditCommand(object source,
            System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
       DataGrid1.EditItemIndex = e.Item.ItemIndex;
       string strID = DataGrid1.EditItemIndex.ToString();
       string ur1 = "WebForm2.aspx";        
       Response.Redirect(ur1);            
    }
      

  8.   

    //****在模版列定义创建一个修改列
    <a href="infoedit.aspx?InfoID=<%#DataBinder.Eval(Container.DataItem,"InfoID"%>'>
      

  9.   

    //*****获取要删除的记录ID
            HtmlInputHidden txtID = (HtmlInputHidden)e.Item.FindControl("txtid");
            switch (e.CommandName)
            { 
                case "Delete":                //****调用删除记录函数
                    DeleteRecored(txtID.Value);                //****重新加载数据
                    PageLoadData();
                    break;
            }
      

  10.   

    谢谢大家的回答.
       我执行到: string strID = e.Item.FindControl("T_DH_ID").ToString();   这句话的时候,报错.
      

  11.   

    解决了:  我是这样取的: string strID = e.Item.Cells[2].Text.Trim();