我想開發一個非常簡單的類似於GridView的模板自定義服務器控件。基本上,我想在.aspx頁面要添加的控制是這樣的:如何構建像DataBound模板的自定義ASP.NET服務器控件的GridView
<cc:SimpleGrid ID="SimpleGrid1" runat="server">
<TemplatedColumn>ID: <%# Eval("ID") %></ TemplatedColumn>
<TemplatedColumn>Name: <%# Eval("Name") %></ TemplatedColumn>
<TemplatedColumn>Age: <%# Eval("Age") %></ TemplatedColumn>
</cc:SimpleGrid>
,並提供以下數據源時:
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Age", typeof(int));
table.Rows.Add(1, "Bob", 35);
table.Rows.Add(2, "Sam", 44);
table.Rows.Add(3, "Ann", 26);
SimpleGrid1.DataSource = table;
SimpleGrid1.DataBind();
的結果應該是一個HTML表像這樣的。
-------------------------------
| ID: 1 | Name: Bob | Age: 35 |
-------------------------------
| ID: 2 | Name: Sam | Age: 44 |
-------------------------------
| ID: 3 | Name: Ann | Age: 26 |
-------------------------------
主要問題是我無法定義TemplatedColumn。當我試圖做這樣的......
private ITemplate _TemplatedColumn;
[PersistenceMode(PersistenceMode.InnerProperty)]
[TemplateContainer(typeof(TemplatedColumnItem))]
[TemplateInstance(TemplateInstance.Multiple)]
public ITemplate TemplatedColumn
{
get { return _TemplatedColumn; }
set { _TemplatedColumn = value; }
}
..並隨後實例中的CreateChildControls模板,我得到了下面的結果是不是我想要的:
-----------
| Age: 35 |
-----------
| Age: 44 |
-----------
| Age: 26 |
-----------
- 我知道我想實現的目標是毫無意義的,我可以使用DataGrid來實現它,但我給出了這個非常簡單的例子,因爲如果我知道如何做到這一點,我將能夠開發出我需要的控件。謝謝。
我讀過這篇文章,但它沒有幫助。本文將介紹如何使用不同模板(如ItemTemplate和HeaderTemplate)開發自定義控件,或者如何將所有內容放在一個ItemTemplate中。我的問題是,我有相同的模板多次使用,所以這篇文章沒有幫助我。 – Deyan 2010-04-13 18:58:26