![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 danny ![]()
![]() |
當 DataGridView 儲存格的文字內容 都刪除 時,其值會變成 null ,請問要怎樣設定,才不會變成null ? (因為欄位是not null的) 我的程式碼如下,環境: Win7 , VS2017 , SQL Server 2012 , .Net FrameWork4 |
1樓 |
不想 DBNull 就需要給值, 有多種方式, 一種方式是給預設值, 另一種方式是在 DataTable New row 時賦值, 再另一種方式是 DataAdapter Update 更新資料庫時賦值... 依實際狀況選擇最符合需求的方式. 其中最簡單的是給預設值, 例如在 DataGridView1.DataSource = dt 之前:
本篇文章回覆於2019-11-20 23:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
danny ![]() |
謝謝 Ader Chen
我照上面的做法,加上 dt.Columns(0).DefaultValue = 0 dt.Columns(1).DefaultValue = "11" dt.Columns(2).DefaultValue = "22" 新增一列時,是有看到預設值, da.Update(dt) 存檔也正常 但是如果是修改舊資料列時,把 姓名 的內容都清成空白時, da.Update(dt) 存檔還是會發生錯誤-"無法插入 NULL 值到資料行 '姓名'
本篇文章回覆於2019-11-21 11:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
剛好來 demo 一下前面說的 DataTable 事件的方式... 1. 寫 DataTable.RowChanged 事件處理程式: 2. 在原來的程式中註冊事件函式, 例如在 DataGridView1.DataSource = dt 之後加兩行: 也可以將 2. 改成 WithEvents 的方式. 以上只是一個 demo 供參考, 可能需視實際情況修改.
本篇文章回覆於2019-11-21 12:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
danny ![]() |
謝謝 Ader Chen
我目前的做法也跟你的建議類似 是否有比較簡單的方便? 例如,像是系統參數設定,下一個指令,空白就不會自動變成null
本篇文章回覆於2019-11-21 14:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓
最有價值解答
Ader Chen ![]() |
再另一種避免 da.Update(dt) 發生 無法插入 NULL 值 錯誤 的方式: 直接於 Insert 和 Update SQL 用 ISNULL(,) 賦值. 一勞永逸, 也不用管前端的 DataGridView 和 DataTable 是否有 DBNull 了. (我手邊沒測試環境, 不確定語法有無錯誤, 請自行試試看)
本篇文章回覆於2019-11-21 15:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
danny ![]() |
謝謝 Ader Chen 不厭其煩的提供不同的做法
搭配不同的做法,問題已解決了
本篇文章回覆於2019-11-21 17:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |