Appendix BClient端元件\InfoDataGridView

InfoDataGridView

 

 

【功能說明】

用途:使用於Client端,繼承自DataGridView元件,用以多列與多行方式顯示資料,並可進行編輯。

 

【元件屬性】

Name(名稱)(string)

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

Columns(欄位明細)(collection)

設定要顯示的欄位明細。每個欄位有以下屬性:

Name(名稱)(string):該列的名稱,用於識別該列。

 

DataProperyName(欄位名稱)(string):設定該列要顯示的欄位名稱。

 

DefaultCellStyle(顯示格式設定)(enum):此欄位專屬的格式,可設定顯示顏色、字體、對齊方式以及資料顯示的格式(如日期格式與數值格調等)

 

HeaderText(抬頭)(string):設定每個欄位的表頭標題。

 

Visible(顯示)(bool):設定該欄位是否可以看見,為False代表隱藏。

 

ReadOnly(唯讀)(bool):設定此欄位是否可以編輯,為False代表不能編輯。

 

Resizable(調整大小)(bool):設定此欄位是否可以調整大小。

 

SortMode(排序模式)(enum):設定此欄位的排序模式,有NotSortable (沒有排序功能)Automatic(自動) Programmatic (程式控制)

 

Frozen(凍結)(bool):設定此欄位是否有凍結在畫面上,如為True時,左邊的所有欄位(包含自己)將會自動凍結,只能捲定右邊的欄位。

 

Width(顯示寬度)(int32):欄位的顯示寬度。

 

AutoSizeMode(自動寬度模式)(enum):設定此欄位寬度的模式,請參考下文中的AutoSizeColumnMode屬性。

 

ToolTipText (提示訊息)(string):當焦點停在本欄位所提示的頂

層訊息。

 

ContextMenuStrip(背景功能表)(MenuStrip):此欄位可配合設定一個MemuScrip功能表。

 

ColumnType(欄位類別)(enum):該列的欄位類別,ColumnType共有以下幾種,其中Info開頭為EEP的元件,其他為C#內定的元件類別。

 

1. InfoDataGridViewCalendarColumn(日期列):要顯示

為日期格式,可用下拉方式點出日曆以方便User選擇。其配合的欄位可以為日期類型,也可以為字串VARCHAR(8)類型,存放格式為YYYYMMDD

 

2. InfoDataGridViewRefValColumn(關連選單列):可

以配合使用InfoRefVal元件,在做資料編輯時,可透過下拉方式點出關聯Table內的相關資料,以方便User選擇。

 

3.     InfoDataGridViewExpressionColumn(運算式列):用

來以運算式的方式來顯示資料,例如,可以利用”Quantity*Price”這種方式來表示此欄位是由QuantityPrice欄位相乘的結果。

 

4. InfoDataGridViewComboBoxColumn(資料下拉

):與上述的關連選單列(RefVal)相似,配合InfoComboBox元件,在資料編輯時可以讓User下拉方式點出ComboBox的資料。不同的是,RefVal列是點出一個關聯資料的表單,此視窗是可以移動位置的,而ComboBox列則會固定是在該欄位下方顯示出ComboBox

 

5. DataGridViewTextBoxColumn(資料列):這是最常

用的欄位類型,如沒有特殊要求,一般都使用此類別。

 

6. DataGridViewLinkColumn(鏈接列):可以使顯示的

內容顯示為鏈接狀態(HyperLink),用此來連結其他的網頁或表單資料,連結時可配合CellClick事件。

 

7. DataGridViewImageColumn(圖示列):可以用來顯

示圖型的欄位。

 

8. DataGridViewComboBoxColumn(下拉列):此類型

的執行效果與InfoDataGridViewComboBoxColumn一致,因為InfoDataGirdViewComboBoxColumn是繼承自本類型加強而成的,多了可在下拉時顯示兩個欄位,並且傳回可以傳回名稱的欄位,而不是傳回邊號的欄位。

 

9.     DataGridViewCheckBoxColumn(勾選列):此類可以

顯示為勾選狀態,使用CheckBox元件來表示。

 

10.  DataGridViewButtonColumn(按鈕列):此類可

Button按鈕來顯示在Grid中,用來讓User更易操作Grid的功能。

11.  DataGridViewIndentityColumn(自動序號):可以自動列出
DataGridView
Position次序,為一個Integer,可不必再使用欄位來顯示。

 

12.  InfoDataTimeBoxColumn ( 日期列 ) :此日期列與 InfoDataTimeViewCanlendarColumn 的差別是,此欄位元類型在顯示時會有日期格式的下劃線提示。

 

RefValue(關聯的InfoRefVal)(string):當ColumnTypeRefValColumnComboBoxColumn時就可以使用本屬性,用來設定與其對應的InfoRefValInfoComboBox

 

Expression(運算式)(string):當ColumnTypeExpressionColumn時就可以使用本屬性,用來設定要顯示內容的運算式,可以直接用欄位名稱來設定。例如:Quantity*Price,用來顯示小計金額。

 

FlatStyle(外觀型態)(enum):當ColumnType ButtonColumnCheckBoxColumn時所使用的屬性,可設定為Flat(平面)Popup(自動開啟其他object)Standard(立體形狀)System(Windows的預設形狀)

 

Text(抬頭文字)(string):當ColumnType ButtonColumnLinkColumn時所使用的屬性,可設定Button/LinkLabel的抬頭文字。如果為LinkColumn時須配合將UseColumnTextForLinkValue設為True才會有效,否則都會顯示欄位內容值。

 

TrueState(邏輯型態)(bool):當ColumnType CheckBoxColumn時,是否允許有三種狀態的CheckBox,為True時代表有三種狀態,須配合TrueValue(勾選值)FalseValue(無勾選值)IndeterminateValue(模糊值)等設定;為False時只須用到TrueValueFalseValue等設定值。

 

DisplayStyle(顯示樣式)(enum):當ColumnType ComboBoxInfoComboBox時使用,可設定ComboBoxDroplDownButtonNothing等樣式。另外由DisplayStyleForCurrentCell=True/False來控制是否僅目前Cell顯示此ComboBox

 

DataSource(資料源)(DataSource):當ColumnType ComboBoxInfoComboBox時使用,可選擇ComBoBox的資料來源,一般是對應到InfoBindnig。配合此屬性還要設定DisplayMember(顯示欄位名稱)ValueMember(內容值欄位名稱)

 

Items(資料內容)(string[]):當ColumnType ComboBoxInfoComboBox時使用,因不選擇使用資料表來源時,可在此直接設定ComboBox的項目內容。

 

ImageLayout(圖型排列)(enum):當ColumnType ImageColumn時使用,可設定為NotSet(無定義)Normal(正常原圖大小)Stretch(自動依比例放大)Zoom(自動依Cell大小縮放,不按比率)另有一個Image屬性可定義預設的圖樣,因為可能此欄位沒有圖型內容。

 

LinkColor(連結顏色)(Color):當ColumnType LinkColumn時使用,代表連結的文字顏色。另外ActvieLinkColor則代表Mouse移到此所顯示的回應顏色,VisitedLinkColor則代表已訪問過之後之鏈結文字的顏色(需配合TraceVisitedState=True才會有效)

 

DataMember(資料成員)(string)

對應的資料表名稱,此可以不必設定,因為在EEP系統中皆統一以DataSource去對應到InfoBindingSource這個對象。

 

DataSource(資料源)(DataSource)

對應的資料集,在此直接對應到InfoBindingSource即可,讓InfoBindingSource與本元件產生互動行為。

 

DeleteHotKey(刪除熱鍵)(string)

用來設定刪除的熱鍵,系統刪除目前筆資料的方法是點在Row Header上,再按「Del」鍵即可刪除。

 

EnterEnable(Enter鍵致能)(bool)

控制Grid可以使用Enter鍵進入編輯Cell的狀態,並且可用Enter鍵進入下一個欄位。

 

SureDelete(確認刪除)(bool)

設定在刪除資料前是否提示確認,如果設為True,則刪除資料時會提示User是否確定刪除。

 

TotalActive(加總啟用)(bool)

是否要在Grid中顯示欄位小計的內容。此時會在Grid的下方多一個Row來顯示加總。

 

TotalBackColor(加總背景顏色)(color)

加總列的背景顏色。

 

TotalCaption(加總抬頭)(string)

加總的抬頭顯示,會顯示在Row的表頭上,所以不宜輸入太多的文字內容。

 

TotalCaptionFont(加總抬頭字型)(font)

TotalCaption的字型。

 

TotalColumns(加總欄位明細)(collection)

設定那些欄位要有加總功能,每個Colleciton定義如下:

 

ColumnName(名稱)(string):要小計的欄位名稱。

ShowTotal(是否顯示加總值)(bool):設定該加總值是否要顯示出來。

TotalAlignment(對齊方式)(enum):加總值的對齊方式,有LeftRightCenter

TotalMode(加總方式)(enum):設定每個欄位的加總方式,有None()Sum(加總)Count(計次)Max(最大值)Min(最小值)Average(平均)

 

TotalFont(加總字型)(font)

加總數值的字型。

 

AllowUserToAddRows(允許新增)(bool)

設定Grid是否可以新增資料。

 

AllowUserToDeleteRows(允許刪除)(bool)

設定Grid是否可以刪除資料。

 

AllowUserToOrderColumns(允許移動欄位)(bool)

設定Grid是否可以用Mosue拖拉欄位表頭來達到更換欄位次序的目的。

 

AllowUserToResizeColumns(允許調整欄寬)(bool)

設定Grid是否可以用Mosue來調整欄位寬度。(Mouse在欄位表頭間的中間線來調整)

 

AllowUserToResizeRows(允許調整列高)(bool)

設定Grid是否可以用Mosue來調整任一列高度。(Mouse在列表頭間的中間線來調整)

 

DefaultCellStyle(顯示格式設定)(CellStyle)

所有欄位的預設格式,可設定顯示顏色、字型、對齊方式等等。

 

AlternatingRowsDefaultCellStyle(列間格格式設定)(CellStyle)

可以設定間格的資料列預設格式,與DefaultCellStyle一起搭配,控制奇數列與偶數列不同顏色與字型。

 

AutoSizeColumnsMode(自動欄位寬度)(enum)

可以設定自動處理欄位寬度大小,可設定AllCells(依所有所以欄位的內容決定大小,包含表頭)AllCellsExceptHeader(依所有欄位的內容決定大小,表頭除外) DisplayedCellsExceptHeader(依畫面上所有欄位的內容決定大小,表頭除外)DisplayedCells(依畫面上所有欄位的內容決定大小,包含表頭),Fill (根據所有欄位與Grid寬度情況自動決定)

 

AutoSizeRowsMode(自動列高度)(enum)

可以設定自動處理列高度大小,可設定AllCells(依所有所以欄位的內容決定高度,包含表頭)AllCellsExceptHeader(依所有欄位的內容決定高度,表頭除外) DisplayedCellsExceptHeader(依畫面上所有欄位的內容決定高度,表頭除外)DisplayedCells(依畫面上所有欄位的內容決定高度,包含表頭),Fill (根據所有欄位與Grid高度情況自動決定)AllHeader(依表頭的內容做為每Row的高度)

 

BackGroundColor(背景顏色)(Color)

沒有資料區域之背景顏色。

 

BorderStyle(邊框型態)(enum)

Grid的邊框型態,可設定None(無框)FixedSingle(單框)Fiexed3D(立體框)

 

CellBorderStyle(欄位格邊框型態)(enum)

Grid內每個Cell的邊框型態,可設定None(無框)Custom(自定)Raised(浮起)RaisedHorizontal(橫浮起線)RaiseVertical(直符起線)Single(單框)SingleHorizontal(橫單線)SingleVertical(直單線)SunKen (沉下)SunKenHorizontal(橫沉下線)SunVertical(直沉下線)

 

Dock(對齊方式)(enum)

Grid的對齊方式,可設定None()Top(靠上)Bottom(靠下)Right(靠右)Left(靠左)Fill(佔滿)

 

EditMode(編輯啟動方式)(enum)

用來設定Grid的編輯啟動方式,可設定為EditOnEnter(Enter鍵啟動)EditOnF2(F2鍵啟動)EditOnKeystroke(任一個鍵)EditOnKeystrokeOrF2(任一個鍵與F2)EditProgrammatically(以程式控制)

 

Enabled(致能)(bool)

是否可以致能。

 

MultiSelect(多筆複選)(bool)

是否可以多筆複選。

 

ReadOnly(唯讀)(bool)

是否為唯讀的情況,不能新增更改刪除。

 

Visible(顯示)(bool)

是否要顯示。

 

【事件】

請參閱 VS有關 DataGridView元件Event

 

【功能函數】

請參閱 VS有關 DataGridView元件Method

 

【範例】

DataGridView 中取出被選取資料內容值

infoDataGridView.SelectedRows 就是當前選中的 Row

infoDataGridView . SelectedRows[index].Cells[index].Value 來取目前資料的內容值。

 

Detail 不是主鍵的欄位,在 GridView 中做到可以新增卻不能更改

可以在 Detail GridView 設定 CellBeginEdit 事件,如下 :

private voidinfoDataGridView1_CellBeginEdit( objectsender, DataGridViewCellCancelEventArgs e)

{

if  (e.RowIndex != infoDataGridView1.NewRowIndex) // 更改而不是新增

 {

        if(e.ColumnIndex == 不希望修改的欄位在的列號 )

       {

               e.Cancel = true; // 拒絕修改

        }

 }

}

 

GridView 取值如下 :

String custid= (( DataGridViewRow) infoDataGridView1. CurrentRow ).Cells [" custidDataGridViewTextBoxColumn"]. Value.ToString ();

 

在某一個 DataGridViewTextBoxColumn 中改變顯示内容,可在 DataGridView CellValueChanged 事件中,如下:

if (infoNavigator1.CurrentState == "Editing" ||infoNavigator1.CurrentState == "Inserting")

{

   if ( e.ColumnIndex== 需要修改的欄位的列數 )

  {
      if( InfoDataGridView[ e.ColumnIndex, e.RowIndex]. Value.ToString().Length < 4)

       InfoDataGridView [ e.ColumnIndex, e.RowIndex].Value = "00" + InfoDataGridView[ e.ColumnIndex, e.RowIndex]. Value.ToString();

  }

}

 

 

Top of Page