国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

DataGrid 動態添加模板列 實現代碼

2024-07-10 12:39:03
字體:
來源:轉載
供稿:網友
使用模版的另一個優勢,就是它們能動態的添加到你的控件里面去. 這樣的話, 你可以事先設計好模版, 然后通過簡單的幾行代碼就添加到你的控件中.

下面這篇文章就要告訴你如何如何一步步的添加一個動態的ItemTemplate和EditItemTemplate到DataGrid中. 另外, 還會告訴你怎么獲取和更新用戶對EditItemTemplate所做的改變. 例子將會是很簡單的. 然后, 我很快就會在TripleASP上面正式發布一個改進后的TableEditor版本. 這個版本將更好的說明如何使用動態模版.


ITempalte的實現
為了能動態的添加ItemTemplate和EditItemTemplate, 我們需要創建2個類來實現ITemplate的接口(Interface). 第一個類是GenericItem. 這個類的主要工作就是: 取數據源的列名, 創建一個文本控件(literal contral), 為這個文本控件賦值, 最后把這個文本控件加到父控件(在這里父控件就是DataGrid了).

到目前為止還是很順利. 在繼續下面的討論之前, 我們來看看代碼和完成的步驟.
using System;
using System.Web;
using System.Data; using System.Web.UI;
using System.Web.UI.WebControls;

namespace TripleASP.ItemTemplates
{
/// <summary>
/// Summary description for GenericItem.
/// </summary>
public class GenericItem : ITemplate
{
private string column;
//private bool validate;
public GenericItem(string column)
{
this.column = column;
}
public void InstantiateIn(Control container)
{
Literal l = new Literal();
l.DataBinding += new EventHandler(this.BindData);
container.Controls.Add(l);
}

public void BindData(object sender, EventArgs e)
{
Literal l = (Literal) sender;
DataGridItem container = (DataGridItem) l.NamingContainer;
l.Text = ((DataRowView) container.DataItem)[column].ToString();

}
}
}

正如你看到的, GenericItem類實現了ITemplate的接口(interface). 因為我們是實現接口, 所以必須包括InstantiateIn這個方法. 這個方法是用來定義所有子控件和模版所屬的控件對象的. 在這個方法里面, 我們創建了一個新的Literal控件來保存DataGrid的單元值. 接著, 我們添加了DataBinding事件處理函數. 這個事件處理函數實際上就是在DataGrid綁定數據的時候, 把單元值放到Literal控件的Text屬性中. 最后, 把這個Literal控件加入到控件的容器集合中. 很簡單吧?

動態EditItemTemplate
動態EditItemTemplate類ValidateEditItem跟GenericItem很類似, 但是有3個地方不同.
第一個不同的地方是, 我們添加的是Textbox控件而不是Literal控件. 這樣的話, 在編輯模式下, 用戶可以做任何修改.
第二個不同的地方, 你會發現我們會顯式地命名控件. 這會使我們能夠獲取更新事件中的任何數據變化.
最后一個不同, 你會看到一個跟Textbox相聯系的RequiredFieldValidator控件. 這是可選的. 但是, 這的確讓你知道有些事是可以這樣做的.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 紫阳县| 上栗县| 铅山县| 达孜县| 孝义市| 观塘区| 瑞丽市| 黔南| 汉源县| 赤城县| 额敏县| 永济市| 阜城县| 庄浪县| 长汀县| 大邑县| 灌阳县| 谷城县| 长乐市| 昭苏县| 泰来县| 巴马| 云梦县| 永平县| 西城区| 交城县| 七台河市| 洱源县| 同德县| 巨鹿县| 秦皇岛市| 保定市| 乳山市| 邹平县| 宜阳县| 临泉县| 富宁县| 屏东县| 福鼎市| 化德县| 郧西县|