【问题标题】:admin approve/reject in one document管理员在一份文件中批准/拒绝
【发布时间】:2013-11-04 20:14:10
【问题描述】:

我已完成批准/拒绝文件,但有问题

假设管理员登录时网格视图中有 3 个文档,并且只想批准/拒绝 1 个文档,即 docid 81,然后单击提交按钮,然后将数据保存到数据库中

审批表

**seqno docid approveid  approveby**
79     14      3       john
80     16      3       john
81     17      2      john

但在我的代码中 当管理员仅批准/拒绝 1 个(即 81 docid)文档而管理员未在其他两个文档中工作时,管理员单击提交按钮,然后其他两个文档数据也保存在批准(即 79,80 docid)表中..为什么会发生这种情况?

这里是提交按钮代码

protected void Button1_Click(object sender, EventArgs e)
    {

        string connStr = 
        ConfigurationManager.ConnectionStrings["mydms"].ConnectionString;
        SqlConnection mySQLconnection = new SqlConnection(connStr);
        if (mySQLconnection.State == ConnectionState.Closed)
        {
            mySQLconnection.Open();
        }

        foreach (GridViewRow row in GrdFileApprove.Rows)
        {

            if (row.RowType == DataControlRowType.DataRow)
            {
                DropDownList DropDownListcontrol = row.FindControl("DropDownList4") as
             DropDownList;
                SqlCommand cmd = new SqlCommand("approveddd", mySQLconnection);
                cmd.CommandType = CommandType.StoredProcedure;                
                cmd.Parameters.Add("@DocID", SqlDbType.Int).Value = 
              Convert.ToInt32((row.Cells[1].Text));
                cmd.Parameters.Add("@ApproveID", SqlDbType.Int).Value = 
               Convert.ToInt32(DropDownListcontrol.SelectedValue);
                cmd.Parameters.Add("@ApproveBy", SqlDbType.VarChar, 50).Value = 
               (Session["Login2"]);
                cmd.ExecuteNonQuery();
                DMSLIB.Doc myDoc = new DMSLIB.Doc();
                myDoc.MarkDocAs(Convert.ToInt16(row.Cells[1].Text), Convert.ToInt32(DropDownListcontrol.SelectedValue));


            }
            else
            {
                apfi.Text = "Error";
            }
        }


        if (mySQLconnection.State == ConnectionState.Open)
        {
            mySQLconnection.Close();
        }

有什么帮助吗?

【问题讨论】:

  • FYI.. 此代码cmd.Parameters.Add("@DocID", SqlDbType.Int).Value = Convert.ToInt32((row.Cells[1].Text)) 会在输入无效的情况下使更新崩溃
  • 看起来你循环了所有行并将它们全部保存,不是吗?
  • 另外,检查存储过程中的 WHERE 子句

标签: c# asp.net


【解决方案1】:

您循环遍历所有行并为每个项目运行存储过程。

【讨论】:

  • @user2931015 您可能只需要处理包含按下按钮的单行
猜你喜欢
  • 2019-03-31
  • 2017-12-09
  • 2014-01-28
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 2017-01-20
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多