获取输入字符串格式的错误

时间:2013-11-14 11:43:28

标签: asp.net

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

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

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

任何想法?

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

2 个答案:

答案 0 :(得分:1)

<td> <asp:Label Id="DocId" text='<%#DataBinder.Eval(Container.DataItem, "DocID")%>' runat="server"></asp:Label>  </td>

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

答案 1 :(得分:1)

出现这个错误是因为如果DocId.Text为空,那么您正在尝试将空字符串转换为整数,这就是“输入字符串格式不正确”的原因。异常。

首先需要检测DocID是否为空字符串,并为您的cmd实例指定-1(比方说)。

你必须先做:

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

然后将其分配给cmd对象

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