方法三利用修改列的EDIT屬性中的DisplayOnly屬性值
語法為dw_ObjectcolumnnameEditDisplayOnly=value 或 dw_Modify(columnnameEditDisplayOnly{=value})
參數說明columnname:要保護的列名
value:表示該列是否為只顯示(DisplayOnly)狀態它有兩個取值Yes和NoYes表示不允許用戶輸入數據(只顯示)No則相反默認值是No
例如如果要使列name設置為只顯示可以在相應事件的腳本中包含下列代碼
dw_ObjectnameEditDisplayOnly=Yes
或者dw_Modify(nameEditDisplayOnly=Yes)
用該方法時列雖不能被修改但該列能得到焦點上述的其它方法則不能
三有選擇的保護某些行
上述方法將對DataWindow的所有行起作用但要想只保護其中的某些行則需要用列的保護(Protect)屬性(取值同上述方法二)但這是在建立DataWindow時實現的方法為在DataWindow畫板(Painter)中雙擊相應的列彈出Column Object 對話框選取Expressions頁在Protect後的框中寫入if(條件表達式)靈活運用條件表達式可以獲得多種保護效果
()只允許修改新插入的行
在一個DataWindow中有時會有這樣的需要已有的數據只能浏覽不允許修改只有用戶新輸入的數據才允許修改此時表達式為 if(isrownew())或者if(not isrownew())
()某一列的保護情況要根據其它列的數據進行
如在員工工資管理中只有工作年限大於年時才允許輸入知識分子補貼(bt)則列bt的Protect後的框中輸入if(integer(mid(string(today()yyyymmdd))) – integer(mid(workdata))>)
()要保護的行只有在執行時才能確定並且不斷變化例如在員工工資管理中假設工資的修改只有該工資的輸入者是變化的且一般情況下只有在執行時才能確定條件需要一個變量這就需要在建立DataWindow時為其指定一個檢索數據的參數(如flag)然後在可修改列的Protect後的框中輸入(user_name是該DataWindow中的一列代表輸入者的名稱)
if (user_name=flag)
在實際應用時還要注意參數的實際類型
()在表中增加一個標志列
上述方法基本上均要求要保護的行有一定的規律可循當這些行沒有規律時可以在相應的表中專門增加一個標志列(設列名為flag)取值為和然後在其它列的Protect後的框中直接輸入flag的表達式運行時若該行的flag=在該行相應的列處於保護狀態對於標志列值的修改可以由數據管理員修改或根據某種情況在程序中靈活設置
編輯推薦
ASP NET開發培訓視頻教程
Microsoft NET框架程序設計視頻教程
[] []
From:http://tw.wingwit.com/Article/program/PB/201311/24606.html