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
- 低開開發筆記(四):實現編輯器內拖拽筆記
- 第三方編輯器控制元件控制元件
- 簡單的低開編輯器(三):實現元件畫布內拖拽元件
- Asp.Net Core 使用Monaco Editor 實現程式碼編輯器ASP.NET
- Android開發 - 掌握ConstraintLayout(三)編輯器AndroidAI
- java實現編輯器(一)Java
- 簡單的低開編輯器(二):實現元件拖拽元件
- Repeater控制元件實現編輯、更新、刪除操作控制元件
- asp.net文字編輯器(FCKeditor)ASP.NET
- Quill編輯器實現原理初探UI
- 地圖編輯器開發中的心得地圖
- 利用 javascript 實現富文字編輯器JavaScript
- xheditor編輯器上傳功能實現
- monaco-editor 實現SQL編輯器SQL
- iOS使用UITableView實現的富文字編輯器iOSUIView
- ExtJS的grid行編輯外掛事件觸發JS事件
- HarmonyOS NEXT應用開發案例——列表編輯實現
- ASP.NET 伺服器控制元件的生命週期ASP.NET伺服器控制元件
- golang實現併發爬蟲三(用佇列排程器實現)Golang爬蟲佇列
- 手機開發實戰47——手機編輯器介紹
- 10分鐘實現Typora(markdown)編輯器
- 手把手實現富文字編輯器
- 常用編輯器列模式快捷鍵模式
- 地圖編輯器幾種實現的總結地圖
- 快速開發,7個 Bootstrap 線上編輯器boot
- 開發asp.net自定義控制元件(asp.net學習筆記三) (轉)ASP.NET控制元件筆記
- 快速實現業務規則的開源API邏輯伺服器簡介API伺服器
- 電子表格控制元件SpreadJS開發案例:一鍵實現多人協同線上表格編輯控制元件JS
- 轉:【Eclipse外掛開發】開啟編輯器Eclipse
- 一款開源的Markdown轉富文字編輯器的實現原理剖析
- [譯] 為數字優先新聞編輯室開發文字編輯器
- ASP.NET動態網站開發培訓-26.線上編輯器FreeTextBox的使用ASP.NET網站
- Linux 命令列下的最佳文字編輯器Linux命令列
- ASP.NET Web Forms – 伺服器控制元件簡介ASP.NETWebORM伺服器控制元件
- 在ASP.NET 中,Javascript 分別獲取Html伺服器控制元件和Web伺服器控制元件的方法ASP.NETJavaScriptHTML伺服器控制元件Web
- 新程式碼編輯器Lime釋出 號稱Sublime Text的開源實現
- 開發動態編輯的表格