2013-11-14 126 views
0

我使用一箇中繼器,而不是網格視圖。在按鈕i的代碼完成,但是當我調試它爲我的錯誤....我試圖發生獲取輸入字符串格式

OK批准文件,但錯誤的錯誤現在我張貼整個代碼,,

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

什麼想法?

ERROR:輸入字符串的格式不正確

+0

請把更多的代碼,還可以指定使用... –

+0

確定現在發佈完整的代碼,請烏爾其分貝請參閱我的更新問題 – user2931015

+0

「DocId.Text」包含一個數字嗎?例如,一個空值會產生一個錯誤。 –

回答

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)); 
1
<td> <asp:Label Id="DocId" text='<%#DataBinder.Eval(Container.DataItem, "DocID")%>' runat="server"></asp:Label> </td> 

綁定像這樣在你的aspx頁面....

+0

製作確定這個標籤只包含int32數字... –

+0

啊..thanku這麼多=) – user2931015