【功能說明】
用途:使用於Client端,讓User可以對InfoBindingSource來進行操作,例如:上筆,下筆,首筆,末筆,新增,刪除,存檔,取消,存檔等功能。
【元件屬性】
Name(名稱)(string)
元件名稱,用於識別該元件。
AbortItem(取消按鈕)(ToolStripButton)
對應的取消按鈕,無需設定,系統會自動設定。AbortItem用來當User進行多次新增更改刪除後,可以用AbortItem來全部取消所有動作,系統內定會執行InfoDateSet.CancelApply()。
AddNewItem(新增按鈕)(ToolStripButton)
對應的新增按鈕,無需設定,系統會自動設定。
AnyQueryID(任意查詢編號)(string)
QueryMode為AnyQuery的時候使用。設定所需要存到資料庫的AnyQueryID。
ApplyItem(存檔按鈕)(ToolStripButton)
對應的存檔按鈕,無需設定,系統會自動設定。ApplyItem用來當User按下時,會將目前對應的InfoBingSource所有新增更改與刪除的資料,送回後端的中。
AutoDisableColumns(自動隱藏欄位)(bool)
QueryMode為AnyQuery的時候使用,對應AnyQuery的AutoDisableColumns
屬性。
BindingSource(資料源)(InfoBindingSource)
要對應的BindingSource,所有Navigator的動作都是會自動與指定的BindingSource相互作用。
CancelItem(單筆取消按鈕)(ToolStripButton)
對應的取消按鈕,無需設定,系統會自動設定。CancelItem用來取消目前筆的InfoBindingSource資料的新增與更改動作,相對於InfoBindingSource.CancelEdit()的動作。
DeleteItem(單筆刪除按鈕)(ToolStripButton)
對應的刪除按鈕,無需設定,系統會自動設定。CancelItem用來删除当前选中的那笔资料,相對於InfoBindingSource.RemoveAt()的動作。
DescriptionItem(狀態描述項目)(ToolStripLabel)
可選一個Label元件,用於顯示資料當前狀態,此狀態會隨著Navigator的操作立即反應,狀態共有Initial,Browsed,Inserting,
Editing,Applying,Changing,Querying,Printing等狀態,這些壯態的說明都是定意在Status屬性當中。
DetailBindingSource(明細資料源)(InfoBindingSource)
QueryMode為AnyQuery的時候使用。給Detail的查詢使用,設定Detail的InfoBindingSource,並且需要設定和Master的關聯Key。在DetailKeyField屬性中設定。
DetailKeyField(明細關聯欄位)(string)
QueryMode為AnyQuery的時候使用。給Detail的查詢使用,設定和Master的關聯Key,需要先設定DetailBindingSource屬性。
DisplayAllOperator(显示所有的操作符)(bool)
QueryMode為AnyQuery的時候使用。對應AnyQuery元件的DisplayAllOperator屬性。
DisplayStyle(顯示樣式)(enum):可以設定InfoNavigator上顯示文字還是圖片或者是文字和圖片的混合模式。
EditItem(編輯按鈕)(ToolStripButton)
對應的編輯按鈕,無需設定,系統會自動設定。一般編輯可以不用顯示,User可以直接對TextBox或其他元件進行編輯,但是如果對應的BindingSource設定AutoDisibleControl=True時,就必須以此Button來進行對資料的編輯。
ExportItem(輸出按鈕)(ToolStripButton)
對應的輸出按鈕,無需設定,系統會自動設定。
ForeColor(字形顏色)(color)
來統一控制所有Navigator中的ToolStripButtons 的字型與顏色。
GetRealRecordCount (取得目前資料筆數)( bool)
該屬性為 true 時 Navigator 的 Count 則顯示資料庫的實際筆數,而不是目前PacketRecords 已取得的資料筆數,預設為 False 。
GetServerText(伺服訊息)(bool)
可以用來表單打開時去取SYSMSG.XML中關於InfoNavigator的所有ToolStripText文字內容(如:首筆/下筆..),並且取得所有的Status文字 內容(如: 新增中/更改中..),以配合Client不同的多國語言環境。
HideItemStates(隱藏項目的狀態)(bool)
設定為True的時候,當按下新增或者編輯按鈕時,只會顯示OK、Cancel、Apply、Abort這四個按鈕,其他的全部隱藏。
InternalQuery ( 內定查詢 )( bool)
用來控制 Query 的 Button 是否呼叫內定的 Query 功能 , 還是要呼叫開發者自行寫的程式 , 預設為 True. 此用來避免使用 Query.Click 事件後必須去將 ViewQueryItem 清除影響到 MultiLanguage 的機制 , 此只要設定 InternalQuery
=False 即可 .
MaxColumnCount(最大欄位數)(int32)
QueryMode為AnyQuery的時候使用。對應AnyQuery元件的MaxColumnCount屬性。
OKItem(暫存單筆按鈕)(ToolStripButton)
對應的確認按鈕,無需設定,系統會自動設定。確認按鈕是用來確認目前對BindingSource所輸入的資料,確認只是將資料放入記憶體中,尚未真正存入後端的A/P Server,但如果BindingSource的AutoApply=True時,確認就會引發存檔的動作。
PrintItem(印表按鈕)(ToolStripButton)
對應的印表按鈕,無需設定,系統會自動設定。在此為空的button,設計者必須自行定義。
QueryColumnMode(查詢欄位模式)(Srvtools.AnyQueryColumnMode)
QueryMode為AnyQuery的時候使用。對應AnyQuery的QueryColumnMode。
QueryFields(查詢欄位明細)(collection)
用來設定User在查詢資料(QueryItem)時,要指定那些欄位做為查詢條件。
AutoSelect ( 自動選擇 ) (bool):QueryMode為AnyQuery時使用,對應AnyQueryColumns的AutoSelect屬性。
Caption( 查詢抬頭 )(string) :取自 D.D.( 資料字典 ) 的 Caption ,沒有定義則取英文 Column 名稱。
ColumnWidth ( 欄位寬度 )(int32) :QueryMode為AnyQuery時使用,對應AnyQueryColumns的ColumnWidth屬性。
Condition( 查詢條件 )(string) :可以預設此欄位的查詢方式,可以設定為
%,%%,=,>,<,>=,<=,<>等等。
DateConver( 日期轉換 ) (bool):QueryMode為AnyQuery時使用,對應AnyQueryColumns的DateConver屬性。
DefaultValue ( 預設值 )(object) :可以設定查詢的預設值。
Enable( 使能 )(bool) :QueryMode為AnyQuery時使用,對應AnyQueryColumns的Enable屬性。
FieldName ( 欄位名稱 )(string) :指查詢的欄位名稱。
IsNvarchar( 是否是Nvarchar )(bool):QueryMode為AnyQuery時使用,對應AnyQueryColumns的IsNvarchar屬性。
Items( 項目 )(String[]) :QueryMode為AnyQuery時使用,對應AnyQueryColumns的Items屬性。
Mode( 查詢元件模式 ) (enum):可選 TextBox 代表一般查詢, ComboBox 代表下拉選單, RefVal 代表使用關連選單, Calendar 代表使用 DateTimePicker 來輸入。
RefButtonAutoPanel(
參考按鈕自動Panel ) (bool):QueryMode為AnyQuery時使用,對應AnyQueryColumns的RefButtonAutoPanel屬性。
RefButtonPanel(
参考按钮Panel ) (Panel):QueryMode為AnyQuery時使用,對應AnyQueryColumns的RefButtonPanel屬性。
RefVal ( 關連元件名稱 ) (Srvtools.InfoRefVal):當 Mode 為 RefVal/Combobox 等時,必須以此來定義對應的元件名稱。
QueryFont(查詢字體)(System.Drawing.Font)
設置查詢表單顯示的字型。
QueryKeepCondition(保存查詢條件)(bool)
設定是否將上一次查詢的條件保存,以便在下一次查詢中可以自動設定好。
QueryKeepCondition(查詢邊界)(bool)
設置查詢表單的邊界。
QueryMargin (查詢邊緣)( Margins )
用來設定查詢時,所有欄位標題的最大長度,用此來解決 Caption 很長時會無法完整顯示的問題。
Botton ( int) 設定欄位標題的下邊距;
Left( int) 設定欄位標題的左邊距寬度;
Right( int) 設定欄位標題的右邊距寬度;
Top( int) 設定欄位標題的上邊距寬度。
QueryMode ( 查詢模式 )( enum)
用來控制使用那一種 Query 來實現查詢,可設定為 Normal 、AnyQuery或
ClientQuery , Normal 代表 Navigator 內建的查詢, ClientQuery/AnyQuery 則代表使用 ClientQuery/AnyQuery 取代內建的查詢,但還是使用 QueryField 作為查詢欄位規則。
QuerySQLSend(查詢SQL发送)(bool)
設置為false的時候會觸發QueryConfirm事件。
States(狀態)(Srvtools.StateCollection)
設定在Navigator有幾種狀態別,並要控制讓那些Button進入致能或失能狀態。系統有以下幾個狀態Initial,Browsed,Inserting,Editing,Applying,Changing,Querying,Printing。每個狀態都可以設定以下屬性:
Description(狀態描述)(String):用來說明狀態。
EnabledControls(顯示的按鈕)(Enum):設定要在此狀態下要讓那些按鈕失能,可以設定多個。
StateText(狀態名稱)(String):狀態的名稱,也是狀態的文字說明,配合DescriptionItem屬性可以顯示狀態文字於Navigator上。如果希望有語言別則可以直接更改此StartText或使用多國語言這個元件。
StatusStrip(状态条)(Srvtools.InfoStatusStrip)
設置InfoNavigator的狀態顯示在哪個InfoStatusStrip上面。
SureAbort (取消確認 )( bool)
設定在取消存檔資料時,是否要讓用戶確認。
SureDelete(刪除確認)(bool)
設定在刪除資料時,是否要讓用戶確認。
SureInsert(新增確認)(bool)
設定在新增資料時,是否要讓用戶確認。
TextImageRelation(圖文關係)(enum)
來統一控制所有Navigator中的ToolStripButtons,如TextImageRelation設為ImageAboveText可以讓所有ICON與說明都顯示在ToolStripButtons中。
ViewBindingSource(View資料源)(InfoBindingSource)
要對應的ViewBindingSource。
ViewCountItemFormat(View總筆數項目格式)(ToolStripLabel)
用來设置ViewCountItem显示的格式。
CountItem(總筆數項目)(ToolStripLabel)
用來顯示目前BiningSource有多少資料筆數的標籤元件,無需設定,系統會自動設定。另一個為ViewCountItem,是用於顯示另一個ViewBindingSource目前有多少資料所使用。
PositionItem(目前筆位置項目)(ToolStripButton)
設定當前筆位置按鈕,無需設定,請不要更改,系統會自動設定。另一個為ViewPositionItem,是用於顯示另一個ViewBindingSource目前筆的位置所使用。
MoveFirstItem(移到第一筆按鈕)(ToolStripButton)
用來將對應的BindingSource移到第一筆,無需設定,系統會自動設定。另一個為ViewMoveFirstItem,是用於控制另一個ViewBindingSource移到第一筆所使用。
MoveLastItem(移到最後一筆按鈕)(ToolStripButton)
用來將對應的BindingSource移到最後一筆,無需設定,系統會自動設定。另一個為ViewMoveLastItem,是用於控制另一個ViewBindingSource移到最後一筆所使用。
MoveNextItem(下一筆按鈕)(ToolStripButton)
用來將對應的BindingSource移到下一筆,無需設定,系統會自動設定。另一個為ViewMoveNextItem,是用於控制另一個ViewBindingSource移到下一筆所使用。
MovePreviousItem(前一筆按鈕)(ToolStripButton)
用來將對應的BindingSource移到上一筆,無需設定,系統會自動設定。另一個為ViewMovePreviousItem,是用於控制另一個ViewBindingSource移到上一筆所使用。
QueryItem(查詢按鈕)(ToolStripButton)
用來查詢BindingSource的資料,無需設定,系統會自動設定。系統會打開一個交談視窗,並讓User輸入各欄位的查詢條件,系統會自動組合SQL語句透過BiningSource對後端下達Where的語句。另有QueryField屬性來定義那些欄位可以查詢。另一個為ViewQueryItem,是用於查詢另一個ViewBindingSource所使用。
RefreshItem(更新按鈕)(ToolStripButton)
用來更新BindingSource目前這筆的資料,無需設定,系統會自動設定。更新時會自動從後端取得目前筆資料,並對BindingSource更新。另一個為ViewRefreshItem,是用於更新另一個ViewBindingSource所使用。
ViewScrollProtect
(View 捲動保護 )( bool)
用來控制當 Navigator 所對應的 InfoBindingSource 編輯時,如果有設定 View 的 InfoBindingSource 時,讓 View 不能隨意移動。
【事件】
StateChanged(狀態變更)
此事件在狀態發生變化時觸發,就是指States屬性變動時。可以用NewState與OldState來瞭解其States的變化,並額外處理自行定義的動作。
QueryConfirm(查詢確認)
此事件在QueryItem查詢視窗確認後觸發,目的是可以用來自行定義Query的InfoDataSet之Where語法。當User對Query輸入完條件後,會觸發此事件,並傳入 e.Filter中,再由開發者自行用InfoDataSet.SetWhere()方式來下達Where SQL語言,此功能要配合InfoNavigator.QuerySQLSend=False,否則會送出兩個Where語句。
QueryWhere ( Eventarg e)
可以用此事件來改變 QueryItem 或 ClientQuery 的 Where 條件,其中 e.WhereString 就是代表 WhereString 的內容。
AfterItemClick ( Eventarg e)
讓你可以控制各個 Button 按下後,要配合執行的功能,可以用 e.ItemName 來取得被按的 Button 名稱。
BeforeItemClick ( Eventarg e)
讓你可以控制各個 Button 按下前,要配合執行的功能,可以用 e.ItemName 來取得被按的 Button 名稱,如不想讓系統繼續執行各 Button 內建的功能,可以執行 e.Cancle =True; 即可。
Before Export ( Eventarg e)
在輸出 Excel 時,提供 e.Sort , e.Filter 供 User 自行設訂排序或資料的過濾條件。
【功能函數】
SetState(String States)
用來自行設定Navigator的State狀態,平常可以不必設定,當使用Navigator時會自動設定States,在此提供自定的方式設定States。
GetCurrentState()
用來取得目前Navigator的State狀態,為一個字串,共有下列幾種狀態:Initial,Browsed,Inserting,Editing,Applying,Changing,
Querying,Printing等八種狀態。
Show( Object
Panel,intColumns)
Panel 代表要顯示的對象,可以像 ClientQeury 的方式一樣,將 QueryFields 內的欄位顯示在 Panel 元件上, Columns 代表要排列的欄位列數。
Execute( Object
Panel)
從 Panel 中取得查詢條件,並組好 Where 語句送往 Navigator 所指定的
InfoBindingSource 的資料表。
Clear( Object
Panel)
將 Panel 的查詢欄位清除。
String GetWhere
(Object Panel)
從 Panel 中取得組好的查詢 Where 語句,但不會送出 Where 的語句,目的是讓開發者自行決定 Where 的 SQL 語句。
【其他說明】
1. InfoNavigator 有一個 Export Icon ,可以將目前的 BindingSource 輸出到Excel 檔案中,如果已經開發好的系統要自行增加這個 Icon( 命名為 Export) ,或重新貼 InfoNavigator 。
2. InfoNavigator 的查詢介面中,可以輸入
"NULL" 這個字串,來代表找資料為 NULL 或空白的資料,以方便 User 查詢空白的資料。
【範例】
在 InfoNavigator 中,需符合某一條件時才能刪除,有 2 個方法,說明如下 :
用 navigator 的刪除來控制,可以在 BeforeItemClick
中寫如下程式 :
if ( e.ItemName== "Delete")
{
if ( not 你的條件 )
{
Messagebox.Show(“
無法刪除 !”);
e.Cancel = true;
}
}
在 Master 或 View 的(如果有 view 的話,可以用 view ) BindingSource 的 PositionChanged
事件以及 InfoNavigator 的 StateChanged 事件去判斷,如下 :
if (not 你的條件 )
{
bindingNavigatorDeleteItem1.enable=false;
}
else
{
bindingNavigatorDeleteItem1.enable=true;
}
Master/Detail 中,控制入明細檔必須有資料才能存檔,可以在 Navigator 的 BeforeItemclick
事件來控制,如下:
if ( e.ItemName== "Apply")
{
if ( ibsDetail.List.Count== 0) e.Cancel = true;// 不存檔
}