台灣最大程式設計社群網站
線上人數
1113
 
會員總數:246203
討論主題:189776
歡迎您免費加入會員
討論區列表 >> VB.NET >> DataColumn 數值條件設定
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
DataColumn 數值條件設定
價值 : 50 QP  點閱數:461 回應數:4
樓主

黑熊
初學者
35 12
616 35
發送站內信

在建立DataColumn時使用DataType屬性可以設定資料類型為字串、浮點數或是正整數,設定後使用者如果輸入了其他類型的資料就觸發DataError事件

那如果我想要做要使用者輸入的數值小於零時觸發DataErroe事件辦法做到嗎?還是一定要在其他事件自己寫判別條件才可以,如果是的話應該要怎麼做呢?

我目前是在CellValueChanged事件寫判別是然後跳出視窗提示使用者格式錯誤,但沒辦法像DataErroe事件那樣在使用者輸入資料格式修改前一直跳出錯誤訊息攔住使用者

不知道有沒有辦法讓DataType屬性加入 >0 這樣的條件?

目前還有看到DataTable.ConstraintCollection類別可以設定條件約束,但這好像不用來設定資料格式,而是用來設定DataTable關聯性用的

搜尋相關Tags的文章: [ DataType ] , [ DataColumn ] ,
本篇文章發表於2018-04-20 10:21
1樓
最有價值解答

Ader Chen
檢舉此回應

參考 DataGridView.CellValidating 事件:
https://msdn.microsoft.com/zh-tw/library/system.windows.forms.datagridview.cellvalidating(v=vs.90).aspx
在其中作資料驗證動作, 若不通過, 就將 e.Cancel = True, 輸入焦點就不能離開該 Cell.
本篇文章回覆於2018-04-20 12:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Ader Chen
檢舉此回應

另, {讓DataType屬性加入 >0 這樣的條件?} 不就是您第一行說的 正整數?
例如 .DataType = System.Type.GetType("System.UInt32") '大於等於0的正整數

參考:https://msdn.microsoft.com/zh-tw/library/system.data.datacolumn.datatype(v=vs.110).aspx
本篇文章回覆於2018-04-20 12:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

黑熊
檢舉此回應
感謝 Ader Chen 的解答

我問題描述的不夠清楚,我想做到的是讓使用者只能輸入大於零的浮點數,所以單用DataType好像不能達到要求
用了DataGridView.CellValidating 事件之後可以在焦點離開的瞬間撈出被修改的儲存格資料,並使用e.Cancel = True來決定驗證後是否讓使用者離開這個焦點
這樣我就可以做到更細緻的資料條件驗證,比起DataType來的彈性

不過 DataGridView.CellValidating 比DataGridView.DataErroe 事件先發生,所以如果要限制資料型態以外的格式至還是在DataGridView.CellValidating才能進行


本篇文章回覆於2018-04-20 16:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

黑熊
檢舉此回應
剛剛發現雖然可以禁止使用者編輯其他儲存格,但如果使用者操作其他控制項就可以忽略警告了,這樣好像沒有把防呆做得很徹底...
本篇文章回覆於2018-04-20 16:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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