【功能說明】
用途:使用於Web網頁中,此元件的主要功能是將一系列對資料的操作整合在一個元件項中,包括:上筆,下筆,最前筆,最後筆,編輯,刪除,新增,確認,取消,存檔,放棄,查詢,列印等等功能。此外用戶還可以根據自己的需要增加與減少自己的功能按鈕。
【元件屬性】
(ID)(名稱)(string)
元件名稱,用於識別該元件。
BindingObject(連結元件)(string)
指示WebNavigator所控制的資料元件,一般對應的資料元件適合的有WebGridView,WebDetailsView,WebFormView等元件。WebNavigator是無法直接連接到WebDataSource資料元件當中,而必須改連接到要顯示的資料元件上,這部份與Windows的InfoNavigator是不一樣的觀念。
ViewBindingObect (瀏覽元件)(string)
用來設定WebNavigator的瀏覽操作的對象元件,一般是指定到另一個WebGridView上來控制其WebGridView上的操作。沒有設定本屬性時會針對原BindingObject的元件對象來作業。WebNavigator的瀏覽操作共有上下筆,首筆末筆,查詢與印表等功能,這些功能都會影響資料的顯示,如果ViewBindingObject設了另一個WebGridView則這些操作都是會動WebGridView來作業,但新增/更改/刪除/確定/取消/存檔/放棄等功能還是對應到BindingObject原來的元件上。此屬性純粹是為了用另一個WebGridView來瀏覽資料,並能關連到原來的Master/Detail的資料(要使用 WebDataSource. ExecuteSync()來進行資料關連)。
QueryFields(查詢欄位明細)(collection)
用來設定User在查詢資料(QueryItem)時,要指定那些欄位做為查詢條件。
FieldName(欄位名稱),指查詢的欄位名稱。
Caption(查詢抬頭),取自D.D.(資料字典)的Caption,沒有定義則取英
文Column名稱。
Condition(查詢條件),可以預設此欄位的查詢方式,可以設定為
%,%%,=,>,<,>=,<=,<>等等。
Mode(查詢元件模式),可選TextBox代表一般查詢ComboBox代表下拉
選單,RefVal代表使用關連選單,Calendar代表使用WebDateTimePicker
來輸入,RefButton代表使用RefButton元件來輸入。
DefaultValue(預設值),可以設定查詢的預設值。
RefVal(關連元件名稱),當Mode為RefVal/Combobox/RefButton等時,
必須以此來定義對應的元件名稱。
ShowDataStyle(連結型態)(enum)
須配合BindingObject所連結的元件來設定,共可選擇WebGridView,WebDetailsView與WebFormView等三種,如設定錯誤會影響WebNavigator與其互動的行為。
QueryMode(查詢模式)(enum)
用來控制使用那一種Query來實現查詢,可設定為Normal或ClientQuery,Normal代表Navigator內建的查詢,ClientQeury則代表使用ClientQeury取代內建的查詢,但還是使用QueryField作為查詢欄位規則。
QueryKeepCondition(保存查詢條件)(bool)
設定是否將上一次查詢的條件保存,以便在下一次查詢中可以自動設定好。
GetServerText(取Server端訊息)(bool)
用來設定WebNavigator各個Buttons的抬頭文字是否取自Server端(定義在Sysmsg.xml中),並會隨Client端的語言來自動抓取,此要ControlType不為Image時才會有效。
ControlType(按鈕類型)(enum)
用來設定各按鈕的外觀類型,可以設定為HyperLink(超連結),Image(圖示),Button(按鈕)等。
LinkLabel(訊息Label)(string)
用來選擇一個Label元件,用來顯示WebNavigator的訊息狀態,訊息的狀態有:Editing(編輯中),Inserting(新增中),Browsing(瀏覽中),Changed(已變更),ApplySucess(存檔成功),ApplyFail(存檔失敗),Aborted(已放棄)等訊息。會自動配合Web的語言別自動決定訊息的語言別。
NavControls(按鈕明細)(Collection)
用來設置WebNavigator中各個Buttons的詳細屬性,如下:
ControlName(按鈕名稱)(string):代表此按鈕的名稱。
ControlText (按鈕抬頭)(string):代表此按鈕所顯示的抬頭內容。
ControlType(按鈕型態)(enum):此按鈕外觀類型,可以設定為
HyperLink(超連結),Image(圖示),Button(按鈕)等。
ControlVisible(顯示)(bool):此按鈕是否顯示。
ImageUrl(按鈕圖示)(string):此按鈕圖示的Url位址(ControlType為
Image時有效)。
MouseOverImageUrl (滑過按鈕圖示)(string):當Mouse移過此按鈕圖示
的Url位址(ControlType為Image時有效)。
Size(寬度)(int32):按鈕的寬度,單位px。
ControlsGap(按鈕間隔)(int)
各個按鈕間之相鄰的間隔,單位為px。
ControlsSize(按鈕寬度)(int)
可以在此統一設置各按鈕的寬度,單位為px。
ForeColor(字型顏色)(int)
各Button文字的顏色。
BackColor(背景顏色)(int)
各Button的底色。
Height(按鈕高度)(int)
各Button的高度。
GridViewMoveMode(GridView 上下筆移動規律 )(enum)
用于設定對應的 WebNavigator 的上下筆(包括第一筆后最后一筆)的移動規則。一個是 PageMode,一個是 RowMode,如果是 PageMode,則依照目前的方式,上下筆為上下頁,如果是 RowMode ,則為上下筆移動。
【事件】
Command(object sender, CommandEventArgs e)
當網頁上的按鈕被按下時觸發,可以用e.CommandName來識別那個Button被按到,如下:
protected void
WebNavigator1_Command(object sender, CommandEventArgs e)
{
if (e.CommandName
== "cmdFirst" || e.CommandName == "cmdPrevious"
|| e.CommandName == "cmdNext" ||
e.CommandName == "cmdLast")
{
Detail.ExecuteSelect(wfvMaster);
DataBind();
}
else if (e.CommandName
== "cmdAdd")
{
Detail.ExecuteAdd(wfvMaster);
DataBind();
}
}
QueryWhere(Eventarg
e)
可以用此事件來改變QueryItem或WebClientQuery的Where條件,其中 e.WhereString 就是代表WhereString的內容。
BeforeCommand(Eventarg
e)
此事件可以先執行此事件,再執行系統內建的功能,如下程式可以在內建功能前做判斷與處理:
protected void
WebNavigator1_BeforeCommand(object sender, BeforeCommandArgs e)
{
if (e.CommandName == "cmdDelete")
//控制delete的行為
{
Label l =
(Label)wfvMaster.FindControl("lShippedDate"); //找出貨日
if (l.Text.Length >0) // 如果有內容
{
wvOrders.Text = "已出貨無法刪除";
e.Cancel = true; // 要放棄後面的系統內定動作
}
}
}
【功能函數】
PerformApply()
這個Method等同在WebNavigator上按下 “Apply”存檔的按鈕,用來讓WebDataSource存檔到後端資料庫中。
SetState(NavigatorState state)
透過這個Method可以改變WebNavigator的訊息狀態,如果有設定LinkLabel者即可看到狀態的顯示。
Show(Object Panel,int Columns)
Panel代表要顯示的對象,可以像WebClientQeury的方式一樣,將QueryFields內的欄位顯示在Panel元件上,Columns代表要排列的欄位列數。
Execute(Object Panel)
從Panel中取得查詢條件,並組好Where語句送往WebNavigator所指定的WebDataSource的資料表。
Clear(Object Panel)
將Panel的查詢欄位清除。
GetWhere(Object Panel)
從Panel中取得組好的查詢Where語句,但不會送出Where的語句,目的是讓開發者自行決定Where的SQL語句。
【其它說明】
1.
如果要在相對按鈕被按下時執行自己的程式,則可以利用Command事件,然後在程式中判斷執行的是那個按鈕,在Command事件中有一個CommandName的屬性可以取用,代表是那個Button被按到,CommandName內容依次為cmdFirst,cmdLast,cmdPrevious,cmdNext,cmdEdit,cmdAdd,cmdDelete,cmdOK,cmdCancel,cmdApply,cmdAbort,cmdQuery,cmdPrint等分別代表不同的按鈕。如可以用以下的自定義的程式來取代原來個功能:
if (e.CommandName == "cmdPrevious")
{
// 自定上筆的程式邏輯
}
else if (e.CommandName == "cmdNext")
{
// 自定下筆的程式邏輯
}
2. WebNavigator中,新增當Mouse移到Icon時,會自動顯示相對的提示文字(Strip)。
3. WebNavigator與InfoNavigator增加Export
Icon,將目前的BindingSource或WebDataSource輸出到Excle檔案中(可讓User填寫檔案名稱),如果已經開發好的系統要自行增加這個Icon(命名為Export),或重新貼InfoNavigator/WebNavigator也可以。
4.WebNavigator的查詢介面中,可以輸入"NULL"這個字串,來代表找資料為NULL或空白的資料,以方便User查詢空白的資料。