2015-09-13 68 views
1

我想從gridview中插入記錄,當用戶在動態創建的行中選擇名稱並單擊按鈕保存。但有時記錄可以保存,大部分時間不是。我的編程邏輯有問題嗎?希望help.Thanks。在asp.net中插入記錄

前端代碼

<td> 
    <asp:Button ID="btnSave" runat="server" Text="Save" CssClass="btn btn-primary" Style="margin-top: 5px; margin-left: 150px" OnClick="btnSave_Click" /></td> 

後端代碼

protected void btnSave_Click(object sender, EventArgs e) 
     { 
      grid2.SaveSelectionToViewState(); 
      string Branch = txtBranch.Text.Trim(); 
      string Name = txtName.Text.Trim(); 
      string sql = ""; 
      string Slmn = ""; 

      DBHandler dbh = new DBHandler(); 
      string active; 

      if (checkbox_id.Checked) 
      { 
       active = "1"; 
      } 
      else 
      { 
       active = "0"; 
      } 

      try 
      { 
       if (Branch != "" && Name != "") 
       { 
        dbh.OpenConnection(); 
        for (int i = 0; i < grid2.Rows.Count; i++) 
        { 
         Slmn = ((TextBox)grid2.Rows[i].Cells[1].FindControl("TextBox1")).Text.Trim(); 

         sql = "Insert into fcs_cotmdl (crdt,crid,cono,tmdl,slmn,acti) values (sysdate,'SYSTEM','" + Branch + "','"; 
         sql += Name + "','" + Slmn + "','" + active + "')"; 

         dbh.ExecuteNonQuery(sql); 
         dbh.TransactionCommit(); 

         Page.ClientScript.RegisterStartupScript(this.GetType(), "Scripts", "<script>alert('Saved');</script>"); 

        } 
       } 
       else 
       { 
        Page.ClientScript.RegisterStartupScript(this.GetType(), "Scripts", "<script>alert('Please fill in the Branch Code or Team Leader Name');</script>"); 
       } 
      } 
      catch (Exception exp) 
      { 
       dbh.TransactionRollBack(); 
      } 
      finally 
      { 
       dbh.CloseConnection(); 
      } 

      checkbox_id.Checked = false; 
      txtBranch.Text = ""; 
      txtName.Text = ""; 
      grid2.DataBind(); 
      SetInitialRow(); 

     } 
+1

在你的表fcs_cotmdl結構中列slmn可以有null或空值嗎? – Prabhat

+0

@Suprabhat謝謝reply.yes..it可以爲null – Jan

+1

通過查看代碼,它似乎一切都會正常工作,直到除非(((TextBox)grid2.Rows [i] .Cells [1] .FindControl(「TextBox1 「)).Text.Trim()'這一行產生一個空的異常。此外,您還可以使用** try..catch **塊來阻止您獲取自定義錯誤頁面。嘗試評論try catch並再次運行。如果出現任何異常,請遵循堆棧跟蹤。 – Prabhat

回答

0
Error information: ORA-12899: value too large for column "EPSI"."FCS_COTMDL"."TMDL" (actual: 21, maximum: 10) 

您已超出列名TMDL的長度。地址最多可容納10個字符,您傳遞的是21個字符。最好將此列長度改爲50或者其他值。因爲人們通常也可以有更多的25個字符的名字。此外,在您的客戶端嘗試限制名稱長度,方法是將MaxLength屬性TextBox更改爲50或某些數字,這些數字更相關且更實用,以便用戶無法將名稱設置爲不超過定義的最大長度。