2015-09-13 66 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或某些数字,这些数字更相关且更实用,以便用户无法将名称设置为不超过定义的最大长度。