0

我使用中继器而不是网格视图。在按钮中我完成了代码,但是当我调试时它显示错误....我正在尝试批准文档但发生错误

好的,现在我发布了整个代码,,

   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();

              for (int i = 0; i < Repeater2.Items.Count; i++)
              {
                  DropDownList DropDownListcontrol =
              ((DropDownList)Repeater2.Items[i].FindControl("DropDownList4"));
                  Label DocId = ((Label)Repeater2.Items[i].FindControl("DocId"));
                 SqlCommand cmd = new SqlCommand("approveddd", mySQLconnection);
                  cmd.CommandType = CommandType.StoredProcedure;
                  cmd.Parameters.Add("@DocID", SqlDbType.Int).Value =
                 Convert.ToInt32((DocId.Text));

                  cmd.Parameters.Add("@ApproveID", SqlDbType.Int).Value = 
            Convert.ToInt32(DropDownListcontrol.SelectedValue);
                  cmd.Parameters.Add("@ApproveBy", SqlDbType.VarChar, 50).Value = 
               (Session["Login2"]);

                  cmd.ExecuteNonQuery();
                  //UPDATE APPPROVEID IN DOCUMENTINFO TABLE
                  DMSLIB.Doc myDoc = new DMSLIB.Doc();
                  myDoc.MarkDocAs(Convert.ToInt16(DocId.Text), 
                Convert.ToInt32(DropDownListcontrol.SelectedValue));

              }

          }
          else
          {
              apfi.Text = "Error";
          }
          if (mySQLconnection.State == ConnectionState.Open)
          {
              mySQLconnection.Close();
          }
                }

这一行的错误

                      cmd.Parameters.Add("@DocID", SqlDbType.Int).Value =
             Convert.ToInt32((DocId.Text));

任何想法?

错误:输入字符串的格式不正确

4

2 回答 2

1

出现该错误是因为如果 DocId.Text 为空,则您正在尝试将空字符串转换为整数,这就是为您提供“输入字符串格式不正确”的原因。例外。

您首先需要检测 DocID 是否为空字符串,然后将 -1(比如说)分配给您的 cmd 实例。

你必须首先做:

DocId.Text= (DocId.Text == "") ? DBNull.Value : Convert.ToInt32(DocId.Text);

然后将其分配给 cmd 对象

cmd.Parameters.Add("@DocID", SqlDbType.Int).Value =Convert.ToInt32((DocId.Text));
于 2013-11-14T12:02:52.793 回答
1
<td> <asp:Label Id="DocId" text='<%#DataBinder.Eval(Container.DataItem, "DocID")%>' runat="server"></asp:Label>  </td>

在您的 aspx 页面中像这样绑定....

于 2013-11-14T11:59:12.117 回答