台灣最大程式設計社群網站
線上人數
1380
 
會員總數:246134
討論主題:189713
歡迎您免費加入會員
討論區列表 >> VB.NET >> DataGridView儲存格的文字內容都刪除時會變成null值,要怎樣設定,才不會變成null
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
DataGridView儲存格的文字內容都刪除時會變成null值,要怎樣設定,才不會變成null
價值 : 100 QP  點閱數:267 回應數:6
樓主

danny
門外漢
0 31
859 74
發送站內信

請教各位
當 DataGridView 儲存格的文字內容 都刪除 時,其值會變成 null ,請問要怎樣設定,才不會變成null ? (因為欄位是not null的)

我的程式碼如下,環境: Win7 , VS2017 , SQL Server 2012 , .Net FrameWork4



搜尋相關Tags的文章: [ datagridview ] , [ cells ] , [ null ] ,
本篇文章發表於2019-11-20 21:42
1樓
回應

Ader Chen
檢舉此回應

不想 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樓
回應

Ader Chen
檢舉此回應

剛好來 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
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.