我用的是VS2005
GridView中加一个“真的要删除吗” 我已经知道了~~~
我现在想知道删除操作是成功还是失败~~~请教该如何实现?顺便问一下 GridView 可以绑定一个 SqlDataSource ,而一个 SqlDataSource 可以设定四条段SQL命令来实现读取,修改,删除和插入,这个大家都是知道的~~~我有时候这四个命令都是存储过程,所以,呵呵,我有时候是设置了一段查询语句和三条修改语句(比如“删除”的时候其实只是修改状态字段值)。在这种情况下我就有了这么一个想法:希望 GridView 在执行 updatecommand 的时候能够像 selectcommand 取到数据。这样我就可以通过存储过程里的 return 或者是 select @err_id,@err_note 来了解 updatecommand 操作的结果和原因。请各位高人赐教,谢谢~~~

解决方案 »

  1.   

    eg:
     <asp:TemplateField ShowHeader="False" HeaderText="Delete">
        <ItemTemplate>
          <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" CommandArgument='<%# Bind("ID") %>'
              CommandName="DeleteLeave" OnClientClick="return confirm('Are you sure to delete?')"
         Text="Delete"></asp:LinkButton>
       </ItemTemplate>
    </asp:TemplateField>
      

  2.   

    我现在想知道删除操作是成功还是失败~~~请教该如何实现?你可以根据删除时的ID来查询判断,select count(*) from t_data where id=删除的那条id
      

  3.   

    事务操作transaction
    SqlDataSource更新
      

  4.   

    非要用SqlDataSource 吗?自己操作数据源不行吗?早点抛弃SqlDataSource ,早点抛弃拖拉控件,早点断奶,这才是王道
      

  5.   

    就用聚合函数和 command的ExecutScalar()做吧
    sqlcommand cmd=new sqlcommand(select count(*) from t_data where id=删除的那条id,"放上你的SQLconnection对象")
    int i=covert.toInt32(cmd.ExecutScalat());
    if(i>0)

    Response.write(<script>alert(‘删除操作成功’)</script>)

    else

    .....
    }只是自己的想法 别砸砖  谢谢...
      

  6.   


    这个办法当然不错,不过只知道删除是否成功~~~
    而我想知道是由于where中的哪个具体条件导致删除失败?还是因为这个记录在提交前被其他人删除?
    而且,最好是执行删除命令的时候就一次返回执行结果,而不是事后在去查询状况~~~
      

  7.   


    该页无法显示,呵呵~~~
    6楼 mngzilin老大 和7楼 qingwengang123老大 你们的想法对我很有启发
    不过由于时间关系我只能加紧开发,却无暇去尝试,只能以后抽时间研究一下~不过觉得很奇怪,既然微软的 MSSQL 存储过程是可以返回多个记录集
    为何 SqlDataSource 却只能搞到第一个?既然存储过程是有输出参数和返回值的,为何 SqlDataSource 也没有提供支持?真想等我哪天搞懂了,自己写一个 Pr_DataSource ~~~
    不只是要支持插,改,删,插,还要可以随意增加删除命令,然后想执行哪个就执行哪个
    要把所有的返回值,输出参数,记录集统统接收,然后想查看哪个就查看哪个那时候,才好呢,嘿嘿~~~
      

  8.   

    执行删除语句,并成功后:
     ClientScript.RegisterStartupScript(this.GetType(), "", "<script language=javascript>alert('删除成功!');</script>");
      

  9.   

    改用个ORM吧,一般ORM中对数据操作后都会返回一个bool值的,很好判断
      

  10.   

    private static readonly string CONNECTIONSTRING =
    ConfigurationManager.ConnectionStrings["HotelManagerConnectionString"].ConnectionString;
    private static SqlConnection connection; private static SqlConnection GetConnection()
    {
    try
    {
    if (connection == null)
    connection = new SqlConnection(CONNECTIONSTRING);
    if (connection.State == ConnectionState.Open)
    connection.Close();
    connection.Open();
    return connection;
    }
    catch (Exception ex)
    {
    throw ex;
    }
    } public static DataSet ExecuteDataSet(string sql,CommandType cmdType,
    params SqlParameter[] parameters)
    {
    try
    {
    SqlConnection cnn = GetConnection();
    SqlDataAdapter sda = new SqlDataAdapter(sql, cnn);
    sda.SelectCommand.CommandType = cmdType;
    if (parameters != null)
    sda.SelectCommand.Parameters.AddRange(parameters);
    DataSet ds = new DataSet();
    sda.Fill(ds, "Demo");
    return ds;
    }
    catch (Exception ex)
    {
    GetConnection().Close();
    throw ex;
    }
    } public static int ExecuteNonQuery(string sql, CommandType cmdType,
    params SqlParameter[] parameters)
    {
    try
    {
    SqlConnection cnn = GetConnection();
    SqlCommand cmd = new SqlCommand(sql, cnn);
    cmd.CommandType = cmdType;
    if (parameters != null)
    cmd.Parameters.AddRange(parameters);
    return cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
    throw ex;
    }
    finally
    {
    GetConnection().Close();
    }
    } public static SqlDataReader ExecuteReader(string sql, CommandType cmdType,
    params SqlParameter[] parameters)
    {
    try
    {
    SqlConnection cnn = GetConnection();
    SqlCommand cmd = new SqlCommand(sql, cnn);
    cmd.CommandType = cmdType;
    if (parameters != null)
    cmd.Parameters.AddRange(parameters);
    return cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }
    catch (Exception ex)
    {
    GetConnection().Close();
    throw ex;
    }
    } public static object ExecuteScanlar(string sql, CommandType cmdType,
    params SqlParameter[] parameters)
    {
    try
    {
    SqlConnection cnn = GetConnection();
    SqlCommand cmd = new SqlCommand(sql, cnn);
    cmd.CommandType = cmdType;
    if (parameters != null)
    cmd.Parameters.AddRange(parameters);
    return cmd.ExecuteScalar();
    }
    catch (Exception ex)
    {
    throw ex;
    }
    finally
    {
    GetConnection().Close();
    }
    }
      

  11.   

     <asp:TemplateField ShowHeader="False" HeaderText="Delete">
      <ItemTemplate>
      <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" CommandArgument='<%# Bind("ID") %>'
      CommandName="DeleteLeave" OnClientClick="return confirm('真的要删除吗?')"
      Text="Delete"></asp:LinkButton>
      </ItemTemplate>
    </asp:TemplateField>
      

  12.   

    你是想知道如果删除失败了,到底是什么错误导致了失败是吗?
    如果是这样的话,我想你通过抛出异常,然后再用Alert(ex.message),应该可以显示到底是什么地方不对导致的删除失败!