Asp.Net伺服器控制元件開發的Grid實現(三)列編輯器
下面是GridColumnsEditor的實現程式碼:
GridColumnsEditor.cs
using System;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
namespace AspNetServerControl
{
public class GridColumnsEditor : CollectionEditor
{
private Type[] types;
/// <summary>
/// 建構函式
/// </summary>
/// <param name="type">控制元件型別</param>
public GridColumnsEditor(Type type)
: base(type)
{
types = new Type[] {
typeof(BoundField)
};
}
/// <summary>
/// 獲取此集合編輯器可包含的資料型別
/// </summary>
/// <returns>型別集合</returns>
protected override Type[] CreateNewItemTypes()
{
return types;
}
}
}
GridColumnsEditor繼承自CollectionEditor,CollectionEditor可以給使用者提供一個編輯的介面,並集合大部分的資料型別。
在建構函式中GridColumnsEditor(Type type)中,只實現了一個BoundField欄位,如果需要其他的欄位,可以在後面新增。比如
types = new Type[] {
typeof(BoundField),
typeof(CheckField)
};
下面看一下BoundField欄位的實現
/// <summary>
/// 表格資料繫結列
/// </summary>
[ToolboxItem(false)]
[ParseChildren(true)]
[PersistChildren(false)]
public class BoundField : GridColumn
{
}
BoundField繼承自GridColumn類,這裡也有一個ParseChildren屬性,主要是為了巢狀。
下面看一下GridColumn的實現
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web.UI;
namespace AspNetServerControl
{
/// <summary>
/// 表格列基類(抽象類)
/// </summary>
[ToolboxItem(false)]
[ParseChildren(true)]
[PersistChildren(false)]
[DefaultProperty("HeaderText")]
public class GridColumn : ControlBase
{
private string _headerText = String.Empty;
/// <summary>
/// 標題欄顯示的文字
/// </summary>
[Category(CategoryName.OPTIONS)]
[DefaultValue("")]
[Description("標題欄顯示的文字")]
public string HeaderText
{
get
{
return _headerText;
}
set
{
_headerText = value;
}
}
private string _dataField = String.Empty;
/// <summary>
/// 欄位名稱
/// </summary>
[Category(CategoryName.OPTIONS)]
[DefaultValue("")]
[Description("欄位名稱")]
public string DataField
{
get
{
return _dataField;
}
set
{
_dataField = value;
}
}
}
}
GridColumn也繼承自ControlBase,所以GridColumn其實也是一個控制元件,只不過我們將其巢狀在了Grid中。
在Grid中定義Columns的屬性時,我們用的是GridColumnCollection類,而該類是一個GridColumn的集合,程式碼如下。
public class GridColumnCollection : Collection<GridColumn>
{
public GridColumnCollection(ControlBase parent)
{
}
}
再看GridColumn類中,我們定義了HeaderText和DataField屬性,這兩個屬性就是我們在default.aspx頁面中編輯Grid時,給BoundField新增的屬性。
到此,整個Grid的封裝就算完成了。
如果結合jquerymobile,可以在Grid的Render函式中,依據jquerymobile的表格標記輸出。
對於Grid的回發事件處理,請參看《Asp.Net伺服器控制元件開發的Grid實現(四)回發事件》
相關文章
- ASP.NET - GridView實現點選編輯列ASP.NETView
- Android開發 - 掌握ConstraintLayout(三)編輯器AndroidAI
- Asp.Net Core 使用Monaco Editor 實現程式碼編輯器ASP.NET
- 簡單的低開編輯器(三):實現元件畫布內拖拽元件
- 低開開發筆記(四):實現編輯器內拖拽筆記
- ExtJS的grid行編輯外掛事件觸發JS事件
- 簡單的低開編輯器(二):實現元件拖拽元件
- ASP.NET 伺服器控制元件的生命週期ASP.NET伺服器控制元件
- Quill編輯器實現原理初探UI
- 電子表格控制元件SpreadJS開發案例:一鍵實現多人協同線上表格編輯控制元件JS
- HarmonyOS NEXT應用開發案例——列表編輯實現
- iOS使用UITableView實現的富文字編輯器iOSUIView
- monaco-editor 實現SQL編輯器SQL
- ASP.NET Web Forms – 伺服器控制元件簡介ASP.NETWebORM伺服器控制元件
- Linux 命令列下的最佳文字編輯器Linux命令列
- golang實現併發爬蟲三(用佇列排程器實現)Golang爬蟲佇列
- 10分鐘實現Typora(markdown)編輯器
- Kendo UI Grid 批量編輯使用總結UI
- ASP.NET Web Forms – Web 伺服器控制元件簡介ASP.NETWebORM伺服器控制元件
- 一款開源的Markdown轉富文字編輯器的實現原理剖析
- vxe-table grid 分享實現單元格編輯表格表尾合計實時計算
- [譯] 為數字優先新聞編輯室開發文字編輯器
- 快速實現業務規則的開源API邏輯伺服器簡介API伺服器
- Linux-vi編輯器開發必備操作Linux
- WPF開發經驗-實現一種三軸機械手控制元件控制元件
- 實用的Plist編輯器:Penguin for MacNGUIMac
- 使用CodeMirror實現Python3線上編輯器Python
- 實時程式碼編輯器
- Unity開源技能編輯器Unity
- 實現一個簡單的在瀏覽器執行Dotnet編輯器瀏覽器
- 低開開發筆記(八): 低程式碼編輯器實現撤銷回退(命令模式,防抖處理)筆記模式
- FastReport VCL報表控制元件教程:元件編輯器寫作AST控制元件
- 後臺第三方編輯器接入秀米編輯器整體流程
- win10策略編輯器怎麼開啟 win10策略編輯器開啟的方法Win10
- vim 列編輯模式模式
- 雜湊表:如何實現word編輯器的拼寫檢查?
- 工作記錄--WPF自定義控制元件,實現一個可設定編輯模式的TextBox控制元件模式
- ThreeJs-07操控物體實現傢俱編輯器JS
- 三款好用的前端程式碼編輯器推薦!前端