【功能說明】
用途:使用於Client端,用在Grid的Column(Style為InfoDataGridViewRefValColumn)以及InfoTextBox。可以透過此元件呼叫關聯選單的資料,並充分利用關聯的資料的內容,用於顯示名稱與輸入查表選單或將其部份欄位帶回來,使User界面更親和。例如,可以用此元件使訂單明細表中的Item_No欄位,關聯到Item表,並在Item_no欄位上顯示Item_Name的內容。
【元件屬性】
Name(名稱)(string)
元件名稱,用於識別該元件。
ActiveBox ( 啟動箱子 ) ( bool)
設置所使用的InfoRefValBox。
AlwaysClose ( 開啟模式 ) ( bool)
用來控制在此元件被啟動時是否要去下載資料, True 代表不會去下載 ( 會使用 Where 1=0 的方式將資料表打開但沒有資料 ) , False 則會下載資料到此資料表中。
AllowAddData
( 是否允許資料新增 ) ( bool)
可控制
InfoRefVal 所打開的視窗中內的 DataGridView 是否要有
" 新增 " 的 Button ,並可以新增資料。注意此功能僅針對資料來源為 InfoDataSet 接上 InfoBindingSource 者。
AutoGridSize(自動大小)(bool)
下拉的視窗是否要自動跟據欄位數多寡決定視窗的大小。
AutoLocate(自動定位)(bool)
設定用戶是否可以通過Keypress事件來自動定位。
Caption(抬頭)(string)
用來設定此RefVal視窗的抬頭。
CheckData(是否檢查)(bool)
可以設定是否在RefTextBox或DataGridView的RefValColumn輸入資料時,檢查其鍵值是否存在。True為要檢查,False則不要。預設為True。
ColumnMatch(欄位對應)(collections)
設定從RefVal關聯的資料表中可以傳回部份欄位內容到原來的BindingSource欄位中。此屬性為一個集合,可設定多個欄位的對應關係,也就是說將User所選的RefVal的來源資料表的欄位值,傳回到目前資料表的某欄位上,每個集合的屬性如下:
SrcFieldName(來源欄位名稱)(string):指來源資料表的欄位名稱。
ScrGetValue(來源運算式)(string):當不能以ScrFieldName的某個欄位來取值,則改用此運算式呼叫另一個程式來傳回自定的內容值。
DestField(目的欄位名稱)(string):指要設值的目的資料表的欄位,取自來源欄位。
Columns(顯示欄位明細)(collections)
設定打開下拉視窗時,要顯示那些欄位。此屬性為一個集合,可同時設定多個要顯示的欄位名稱,如果不設定,則顯示所有欄位。其中每個欄位還可以設定如下內容:
Column(欄位名稱)(string):要顯示的欄位名稱。
DefaultCellStyle(顯示格式)(string):設定資料顯示格式。
HeaderText(抬頭)(string):要顯示欄位的表頭。此屬性可使用DD資料字典功能,在新增Column時,系統會自動到系統表COLDEF中找到該資料表該欄位的抬頭內容。
Width(寬度)(int32):欄位的寬度。
Visible( 顯示 )( bool) :用來設定是否顯示。
DataSource(資料源)(InfoBindingSource)
定義下拉的關聯的資料表的來源,如果定義了SelectCommand則就可不必設定此DataSource屬性。
DisplayMember(顯示欄位)(string)
用來設定所要對應顯示的欄位名稱,在對應的TextBox或DataGridView中所要顯示的對方欄位名稱。例如以「客戶編號」去找對方「客戶名稱」並顯示出來。
Font(字型)(System.Drawing.Font)
用來設定RefVal所顯示的字型
IgnoreCase(忽略大小寫)(bool)
用來設定是否忽略大小寫。
PacketRecords
( 傳送記錄數 )( int)
此屬性可是讓 SelectCommand 方式取得的 InfoRefVal 資料,也可以有 PackageRecord 功能,預設為 100 。
SelectAlias(指定資料庫)(string)
配合SelectCommand 設定語法時,在RunTime上去New一個InfoBindingSource,讓RefVal能自行獨自運作。.
SelectCommand(關聯資料語法)(string)
設定此RefVal關聯的資料表的資料來源命令語法,系統會根據SelectAlias的資料庫到A/P Server上動態取得此關連選單的資
料,在此可以用我們內建的SQL Wizard來建立Select語句;另外也可以用DataSource方式對應到另一個InfoBindingSource,只不過這樣A/P Server也要設定InfoCommand,在Client端則要設定InfoDataSet與InfoBindingSource,手續較為煩瑣,使用SelectCommand方式則會內建一個InfoDataSet與InfoBindingSource在RefVal內部中。
ValueMember(關聯欄位)(string)
用來設定下拉打開關連表單時,要用此欄位去關聯到下拉出來的資料表。例如以「客戶編號」去下拉出客戶資料表的關聯選
單。
WhereItem(Where條件項目)(collections)
當RefVal被關聯或打開時,此時系統會自動以此Where的條件到後端重新區資料,WhereItem為一個集合,可以設定多個欄位的條件。
其中每個WhereItem可以設定:
FieldName(條件欄位名稱)(string):需要設定條件的欄位名稱。
Condition(條件)(enum):有=,%,%%,>,<,!=,>=,<=,用來控制何種Where條件。
Value(條件值)(string):可設定常數或使用()的函數引用方式取得動態條件值。如可以利用此Value呼叫另一個程式取得其它TextBox.Text內容傳回到此Value,來達到過濾與篩選此RefVal的條件。
WhereItemCache(Where條件項目緩存)(bool)
設置是否要緩存WhereItem。
FormSize(表單尺寸)(bool)
設置RefVal打開的表單大小。
【事件】
OnActive(被觸發時)
當此RefVal被觸發時的事件。
OnClose(被結束時)
當此RefVal被結束或關閉時的事件(取消、確定都會觸發此事件)。
OnReturn ( EventArg e)
當此 RefVal 被返回值時的事件。
QueryWhere(EventArgs e)
此事件可以讓 User 自行調整 Where 的 SQL 語句 . 如下 :
Private void
rvOrdersCustomerID_QueryWhere(object sender, NavigatorQueryWhereEventArgse)
{
e.WhereString= " CustomerID=
'ALFKI'"; // 自行改變 Where 的內容
}
【功能函數】
DoColumnMatch(執行欄位對應)
可以讓User在輸入資料時,不經過RefVal的按鈕也能執行ColumnMatch對應設值的動作。
【其他說明】
1. InfoRefval 如果
ValueMember 和 DisplayMember 是同一個欄位時,系統會自動不去尋找資料,以加快顯示速度。