關於 DataTable ColumnChanging, ColumnChanged 等事件的問題 |
尚未結案
|
chrischi
初階會員 發表:58 回覆:59 積分:28 註冊:2004-05-04 發送簡訊給我 |
大家好 請教一個關於 DataTable ColumnChanging, ColumnChanged 等事件的問題,
就是我在書上(與 MSDN)中說明當使用者輸入欄位數值時可透過 DataTable 的
ColumnChanging, ColumnChanged 等事件進行資料檢核與取消等動作, 但經
試驗卻都沒什麼作用, DataTable's ColumnChanged 事件程式碼如下: procedure MyMainForm.ColumnChanged(Sender : System.Object; e : DataColumnChangeEventArgs);
begin
if e.Column = e.Row.Table.Columns['TableName'] then
begin
// 表格名稱輸入空白, 空白時引發例外以取消新增 DataRow
if e.Row['TableName'].ToString.Trim = '' then
raise Exception.Create('表格名稱不可為空白.');
// 檢查表格名稱是否重覆, 重覆時引發例外以取消新增 DataRow
for Row in e.Row.Table.Select('TableName = ''' + e.Row['TableName'].ToString + '''') do
if Row <> e.Row then
raise Exception.Create('表格名稱重覆.');
end;
end; 問題是假設已存在一筆記錄, 然後使用者新增一筆記錄並在 "表格名稱(TableName)" 欄位
輸入幾個空白後指向前一筆已存在記錄, 依照 ColumnChanged 中程式碼, "表格名稱(TableName)" 為
空白的記錄應要自動取消但卻沒有 : 新增一筆 "表格名稱(TableName)" 欄位值為幾個空白字元的記錄:
指向前一筆已存在記錄但違反規則的記錄仍存在:
如果新增記錄並於 "表格名稱(TableName)" 輸入 ABC, 因為 ABC 已存在所以也應自動取消記錄
新增, 但也沒有, 根本沒作用... 請問應該如何才能做到這樣的需求呢?即鍵值重覆與鍵值空白自動取消新增記錄,而不要出現那個
白痴又沒人性(就一般應用程式使用者的角度來看)的提示訊息:
*鍵值是 "表格名稱(TableName)" 欄位. 開發環境 : Windows 2000 Pro Pack 4, Delphi 2005 Arch Update 3, ADO.NET & DataGrid 謝謝 Chris
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |