擴展GridView控件(索引) - 增加多個常用功能

原文地址爲: 擴展GridView控件(索引) - 增加多個常用功能

[最後更新:2008.03.28]
GridView既強大又好用。爲了讓它更強大、更好用,我們來寫一個繼承自GridView的控件。
[源碼下載(C#)]
[源碼下載(VB)] 感謝 旌浪提供VB版本 相關文章地址


擴展GridView控件(索引) - 增加多個常用功能


作者: webabcd


/* 正式版的實現 開始 */

文章索引
擴展GridView控件(0) - 基本架構、增加事件和要點彙總
擴展GridView控件(1) - 鼠標經過行時改變行的樣式
擴展GridView控件(2) - 複合排序和排序狀態提示
擴展GridView控件(3) - 根據按鈕的CommandName設置其客戶端屬性
擴展GridView控件(4) - 聯動複選框(複選框的全選和取消全選)
擴展GridView控件(5) - 固定指定行、指定列
擴展GridView控件(6) - 響應行的單擊事件和雙擊事件
擴展GridView控件(7) - 行的指定複選框選中時改變行的樣式
擴展GridView控件(8) - 導出數據源的數據爲Excel、Word或Text
擴展GridView控件(9) - 給數據行增加右鍵菜單
擴展GridView控件(10) - 自定義分頁樣式
擴展GridView控件(11) - 合併指定列的相鄰且內容相同的單元格
注:除了「固定指定行、指定列」僅支持IE外,其它均同時支持IE和FF


控件截圖



控件使用
1、鼠標經過行的時候改變該行的樣式,鼠標離開行的時候恢復該行的樣式
使用方法(設置屬性): 
MouseOverCssClass - 鼠標經過行時行的 CSS 類名

2、對多個字段進行復合排序;升序、降序的排序狀態提示
使用方法(設置SmartSorting複合屬性):
AllowSortTip - 是否啓用排序提示
AllowMultiSorting - 是否啓用複合排序
SortAscImageUrl - 升序提示圖片的URL(不設置則使用默認圖片)
SortDescImageUrl - 降序提示圖片的URL(不設置則使用默認圖片)
SortAscText - 升序提示文本
SortDescText - 降序提示文本

3、根據按鈕的CommandName設置其客戶端屬性
使用方法(設置ClientButtons集合屬性):
BoundCommandName - 需要綁定的CommandName
AttributeKey - 屬性的名稱
AttributeValue - 屬性的值(兩個佔位符:{0} - CommandArgument;{1} - Text)
Position - 屬性的值的位置

4、聯動複選框(複選框的全選和取消全選)。選中指定的父複選框,則設置指定的所有子複選框爲選中狀態;取消選中指定的父複選框,則設置指定的所有子複選框爲取消選中狀態
使用方法(設置CascadeCheckboxes集合屬性):
ParentCheckboxID - 模板列中 父複選框ID
ChildCheckboxID - 模板列中 子複選框ID
YYControls.Helper.SmartGridView中的靜態方法
List GetCheckedDataKey(GridView gv, int columnIndex)
List GetCheckedDataKey(GridView gv, string checkboxId)

5、固定指定行、指定列,根據RowType固定行,根據RowState固定行
使用方法(設置FixRowColumn複合屬性):
FixRowType - 需要固定的行的RowType(用逗號「,」分隔)
FixRowState - 需要固定的行的RowState(用逗號「,」分隔)
FixRows - 需要固定的行的索引(用逗號「,」分隔)
FixColumns - 需要固定的列的索引(用逗號「,」分隔)
TableWidth - 表格的寬度
TableHeight - 表格的高度

6、響應行的單擊事件和雙擊事件,並在服務端處理
使用方法(設置屬性):
BoundRowClickCommandName - 行的單擊事件需要綁定的CommandName
BoundRowDoubleClickCommandName - 行的雙擊事件需要綁定的CommandName

7、行的指定複選框選中的時候改變該行的樣式,行的指定複選框取消選中的時候恢復該行的樣式
使用方法(設置CheckedRowCssClass複合屬性):
CheckBoxID - 模板列中 數據行的複選框ID
CssClass - 選中的行的 CSS 類名

8、導出數據源的數據爲Excel、Word或Text(應保證數據源的類型爲DataTable或DataSet)
使用方法:
爲SmartGridView添加的方法
Export(string fileName)
Export(string fileName, ExportFormat exportFormat)
Export(string fileName, ExportFormat exportFormat, Encoding encoding)
Export(string fileName, int[] columnIndexList, ExportFormat exportFormat, Encoding encoding)
Export(string fileName, int[] columnIndexList, string[] headers, ExportFormat exportFormat, Encoding encoding)
Export(string fileName, string[] columnNameList, ExportFormat exportFormat, Encoding encoding)
Export(string fileName, string[] columnNameList, string[] headers, ExportFormat exportFormat, Encoding encoding)


9、給數據行增加右鍵菜單,響應服務端事件或超級鏈接
使用方法(設置ContextMenus集合屬性):
Text - 菜單的文本內容
BoundCommandName - 需要綁定的CommandName
NavigateUrl - 鏈接的URL
Target - 鏈接的目標窗口或框架
SmartGridView的屬性ContextMenuCssClass - 右鍵菜單的級聯樣式表 CSS 類名(右鍵菜單的結構div ul li a)

10、自定義分頁樣式。顯示總記錄數、每頁記錄數、當前頁數、總頁數、首頁、上一頁、下一頁、末頁和分頁按鈕
使用方法(設置CustomPagerSettings複合屬性):
PagingMode - 自定義分頁的顯示模式
TextFormat - 自定義分頁的文本顯示樣式(四個佔位符:{0}-每頁顯示記錄數;{1}-總記錄數;{2}-當前頁數;{3}-總頁數)

11、合併指定列的相鄰且內容相同的單元格
使用方法(設置屬性):
MergeCells -  需要合併單元格的列的索引(用逗號「,」分隔)

/* 正式版的實現 結束 */


/* 測試版的實現 開始 */

控件開發
擴展GridView控件(一)——鼠標經過行時改變行的樣式

擴展GridView控件(二)——給字段標題加上排序狀態

擴展GridView控件(三)——單擊命令按鈕彈出確認框

擴展GridView控件(四)——每行復選框的全選與取消全選

擴展GridView控件(五)——固定表頭、指定行或指定列

擴展GridView控件(六)——數據行響應鼠標的單擊和雙擊事件

擴展GridView控件(七)——改變通過複選框選中的行的樣式

擴展GridView控件(八)——導出爲Excel

擴展GridView控件(九)——給數據行增加右鍵菜單

擴展GridView控件(十)——擴展分頁功能


控件截圖



控件使用
1、鼠標經過行時改變行的樣式
CssClassMouseOver - 鼠標經過行時行的樣式的CSS類名

2、給字段標題加上排序狀態
設置其SortTip下的4個屬性即可
SortAscImage - 升序提示圖片
SortAscText - 升序提示文本
SortDescImage - 降序提示圖片
SortDescText - 降序提示文本

3、單擊命令按鈕彈出確認框
設置其ConfirmButtons屬性
CommandName - 命令按鈕的CommandName屬性
ConfirmMessage - 彈出的確認框所顯示的文字

4、每行復選框的全選與取消全選
在模板列的頭模板處添加一個複選框,在模板列的項模板處添加一個複選框,然後設置控件的CheckboxAlls屬性
CheckboxAllID - 模板列全選複選框ID
CheckboxItemID - 模板列項複選框ID

5、固定表頭、指定行或指定列
設置其FixRowCol下的6個屬性
IsFixHeader - 固定表頭否?
IsFixPager - 固定分頁行否?
FixRowIndices - 需要固定的行的索引(用逗號「,」分隔)
FixColumnIndices - 需要固定的列的索引(用逗號「,」分隔)
TableWidth - 表格的寬度
TableHeight - 表格的高度
EnableScrollState - 是否保持滾動條的狀態

6、數據行響應鼠標的單擊和雙擊事件
RowClickButtonID - 行單擊事件所對應的按鈕的ID
RowDoubleClickButtonID - 行雙擊事件所對應的按鈕的ID

7、改變通過CheckBox選中的行的樣式
CheckBoxID - 模板列的項複選框的ID
CssClassRowSelected - 選中行的樣式的CSS類名

8、導出爲Excel
在GridView內加一個按鈕
CommandName屬性設置爲「ExportToExcel」
CommandArgument屬性的值用「;」做分隔符分爲兩部分,左邊的部分爲導出Excel的文件名稱,右邊的部分爲需要隱藏的列的索引(列索引用「,」分開)

9、給數據行增加右鍵菜單
ItemType - 右鍵菜單的項的類別(Link,Command,Custom,Separator)
Icon - 文字左邊的圖標的鏈接
Text - 菜單的文字
CommandButtonId - 所調用的命令按鈕的ID
NavigateUrl - 鏈接的url
Target - 鏈接的target(Blank,Self,Top)
Key - 自定義屬性key
Value - 自定義屬性value

10、擴展分頁功能
設置PagingStyle屬性爲Default
設置GridView的原有屬性PageButtonCount,FirstPageText,PreviousPageText,NextPageText,LastPageText,FirstPageImageUrl,PreviousPageImageUrl,NextPageImageUrl,LastPageImageUrl

/* 測試版的實現 結束 */


OK
[源碼下載]

轉載請註明本文地址: 擴展GridView控件(索引) - 增加多個常用功能