InfoDataGridView
【功能說明】
用途:使用於 Client 端,繼承自 DataGridView 元件,用以多列與多行方式顯示資料,並可進行編輯。
【元件屬性】
Name( 名稱 )(string)
元件名稱,用於識別該元件。
Columns( 欄位明細 )(collection)
設定要顯示的欄位明細。每個欄位有以下屬性:
Name( 名稱 )(string) :該列的名稱,用於識別該列。
DataProperyName ( 欄位名稱 )(string) :設定該列要顯示的欄位名稱。
DefaultCellStyle ( 顯示格式設定 )( enum) :此欄位專屬的格式,可設定顯示顏色、字體、對齊方式以及資料顯示的格式 ( 如日期格式與數值格調等 ) 。
HeaderText ( 抬頭 )(string) :設定每個欄位的表頭標題。
Visible( 顯示 )( bool) :設定該欄位是否可以看見,為 False 代表隱藏。
ReadOnly ( 唯讀 )( bool) :設定此欄位是否可以編輯,為 False 代表不能編輯。如果 Column 設為 ReadOnly ,當 User 按下 Tab 或 Enter 鍵時可以跳過。
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 選擇。 RefValColumn 當 CheckData 為 True 時,如果没有找到輸入值 , 更正讓 Cursor 留在 RefValColumn 上。
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 是否可以新增資料。
AllowUserToAddRows ( 允許新增 )(
bool)
設定 Grid 是否可以刪除資料。
AllowUserToOrderColumns ( 允許移動欄位 )(
bool)
設定 Grid 是否可以用 Mosue 拖拉欄位表頭來達到更換欄位次序的目的。
AllowUserToResizeColumns ( 允許調整欄寬 )(
bool)
設定 Grid 是否可以用 Mosue 來調整欄位寬度。 ( 用 Mouse 在欄位表頭間的中間線來調整 ) 。
AllowUserToResizeRows ( 允許調整列高 )(
bool)
設定 Grid 是否可以用 Mosue 來調整任一列高度。 ( 用 Mouse 在列表頭間的中間線來調整 ) 。
DefaultCellStyle ( 顯示格式設定 )( C ellStyle
)
所有欄位的預設格式,可設定顯示顏色、字型、對齊方式等等。
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 ( 唯讀 )( b ool
)
是否為唯讀的情況,不能新增更改刪除。
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();
}
}
| Converted from CHM to HTML with chm2web Pro 2.85 (unicode) |