Appendix BClient端元件\InfoNavigator

InfoNavigator

 

 

【功能說明】

用途:使用於Client端,讓User可以對InfoBindingSource來進行操作,例如:上筆,下筆,首筆,末筆,新增,刪除,存檔,取消,存檔等功能。

 

【元件屬性】

Name(名稱)(string)

元件名稱,用於識別該元件。

 

AbortItem(取消按鈕)(ToolStripButton)

對應的取消按鈕,無需設定,系統會自動設定。AbortItem用來當User進行多次新增更改刪除後,可以用AbortItem來全部取消所有動作,系統內定會執行InfoDateSet.CancelApply()

 

AddNewItem(新增按鈕)(ToolStripButton)

對應的新增按鈕,無需設定,系統會自動設定。

 

AnyQueryID(任意查詢編號)(string)

QueryModeAnyQuery的時候使用。設定所需要存到資料庫的AnyQueryID

 

ApplyItem(存檔按鈕)(ToolStripButton)

對應的存檔按鈕,無需設定,系統會自動設定。ApplyItem用來當User按下時,會將目前對應的InfoBingSource所有新增更改與刪除的資料,送回後端的中。

 

AutoDisableColumns(自動隱藏欄位)(bool)

QueryModeAnyQuery的時候使用,對應AnyQueryAutoDisableColumns

屬性。

 

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)

QueryModeAnyQuery的時候使用。給Detail的查詢使用,設定DetailInfoBindingSource,並且需要設定和Master的關聯Key。在DetailKeyField屬性中設定。

 

 

DetailKeyField(明細關聯欄位)(string)

QueryModeAnyQuery的時候使用。給Detail的查詢使用,設定和Master的關聯Key,需要先設定DetailBindingSource屬性。

 

DisplayAllOperator(显示所有的操作符)(bool)

QueryModeAnyQuery的時候使用。對應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的時候,當按下新增或者編輯按鈕時,只會顯示OKCancelApplyAbort這四個按鈕,其他的全部隱藏。

 

InternalQuery ( 內定查詢 )( bool)

用來控制 Query Button 是否呼叫內定的 Query 功能 , 還是要呼叫開發者自行寫的程式 , 預設為 True. 此用來避免使用 Query.Click 事件後必須去將 ViewQueryItem 清除影響到 MultiLanguage 的機制 , 此只要設定 InternalQuery =False 即可 .

 

MaxColumnCount(最大欄位數)(int32)

QueryModeAnyQuery的時候使用。對應AnyQuery元件的MaxColumnCount屬性。

 

OKItem(暫存單筆按鈕)(ToolStripButton)

對應的確認按鈕,無需設定,系統會自動設定。確認按鈕是用來確認目前對BindingSource所輸入的資料,確認只是將資料放入記憶體中,尚未真正存入後端的A/P Server,但如果BindingSourceAutoApply=True時,確認就會引發存檔的動作。

 

PrintItem(印表按鈕)(ToolStripButton)

對應的印表按鈕,無需設定,系統會自動設定。在此為空的button,設計者必須自行定義。

 

QueryColumnMode(查詢欄位模式)(Srvtools.AnyQueryColumnMode)

QueryModeAnyQuery的時候使用。對應AnyQueryQueryColumnMode

 

QueryFields(查詢欄位明細)(collection)

用來設定User在查詢資料(QueryItem)時,要指定那些欄位做為查詢條件。

AutoSelect ( 自動選擇 ) (bool)QueryModeAnyQuery時使用,對應AnyQueryColumnsAutoSelect屬性。

Caption( 查詢抬頭 )(string) 取自 D.D.( 資料字典 ) Caption ,沒有定義則取英文 Column 名稱。

ColumnWidth ( 欄位寬度 )(int32) QueryModeAnyQuery時使用,對應AnyQueryColumnsColumnWidth屬性。

Condition( 查詢條件 )(string) 可以預設此欄位的查詢方式,可以設定為 %,%%,=,>,<,>=,<=,<>等等。

DateConver( 日期轉換 ) (bool)QueryModeAnyQuery時使用,對應AnyQueryColumnsDateConver屬性。

DefaultValue ( 預設值 )(object) 可以設定查詢的預設值。

Enable( 使能 )(bool) QueryModeAnyQuery時使用,對應AnyQueryColumnsEnable屬性。

FieldName ( 欄位名稱 )(string) 指查詢的欄位名稱。

IsNvarchar( 是否是Nvarchar )(bool)QueryModeAnyQuery時使用,對應AnyQueryColumnsIsNvarchar屬性。

Items( 項目 )(String[]) QueryModeAnyQuery時使用,對應AnyQueryColumnsItems屬性。

Mode( 查詢元件模式 ) (enum)可選 TextBox 代表一般查詢, ComboBox 代表下拉選單, RefVal 代表使用關連選單, Calendar 代表使用 DateTimePicker 來輸入。

RefButtonAutoPanel( 參考按鈕自動Panel ) (bool)QueryModeAnyQuery時使用,對應AnyQueryColumnsRefButtonAutoPanel屬性。

RefButtonPanel( 参考按钮Panel ) (Panel)QueryModeAnyQuery時使用,對應AnyQueryColumnsRefButtonPanel屬性。

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進入致能或失能狀態。系統有以下幾個狀態InitialBrowsedInsertingEditingApplyingChangingQueryingPrinting。每個狀態都可以設定以下屬性:

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屬性變動時。可以用NewStateOldState來瞭解其States的變化,並額外處理自行定義的動作。

 

QueryConfirm(查詢確認)

此事件在QueryItem查詢視窗確認後觸發,目的是可以用來自行定義QueryInfoDataSetWhere語法。UserQuery輸入完條件後,會觸發此事件,並傳入 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)

用來自行設定NavigatorState狀態,平常可以不必設定,當使用Navigator時會自動設定States,在此提供自定的方式設定States

 

GetCurrentState()

用來取得目前NavigatorState狀態,為一個字串,共有下列幾種狀態: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;//
不存檔

}

 

 

Top of Page