【功能說明】
用途:使用於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”這種方式來表示此欄位是由Quantity與Price欄位相乘的結果。
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):當ColumnType為RefValColumn和ComboBoxColumn時就可以使用本屬性,用來設定與其對應的InfoRefVal或InfoComboBox。
Expression(運算式)(string):當ColumnType為ExpressionColumn時就可以使用本屬性,用來設定要顯示內容的運算式,可以直接用欄位名稱來設定。例如:Quantity*Price,用來顯示小計金額。
FlatStyle(外觀型態)(enum):當ColumnType為
ButtonColumn與CheckBoxColumn時所使用的屬性,可設定為Flat(平面),Popup(自動開啟其他object),Standard(立體形狀),System(依Windows的預設形狀)。
Text(抬頭文字)(string):當ColumnType為
ButtonColumn或LinkColumn時所使用的屬性,可設定Button/LinkLabel的抬頭文字。如果為LinkColumn時須配合將UseColumnTextForLinkValue設為True才會有效,否則都會顯示欄位內容值。
TrueState(邏輯型態)(bool):當ColumnType為
CheckBoxColumn時,是否允許有三種狀態的CheckBox,為True時代表有三種狀態,須配合TrueValue(勾選值)與FalseValue(無勾選值)與IndeterminateValue(模糊值)等設定;為False時只須用到TrueValue與FalseValue等設定值。
DisplayStyle(顯示樣式)(enum):當ColumnType為
ComboBox或InfoComboBox時使用,可設定ComboBox,DroplDownButton,Nothing等樣式。另外由DisplayStyleForCurrentCell=True/False來控制是否僅目前Cell顯示此ComboBox。
DataSource(資料源)(DataSource):當ColumnType為
ComboBox或InfoComboBox時使用,可選擇ComBoBox的資料來源,一般是對應到InfoBindnig。配合此屬性還要設定DisplayMember(顯示欄位名稱)與ValueMember(內容值欄位名稱)。
Items(資料內容)(string[]):當ColumnType為
ComboBox或InfoComboBox時使用,因不選擇使用資料表來源時,可在此直接設定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):加總值的對齊方式,有Left,Right,Center。
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();
}
}