【发布时间】:2011-02-07 14:13:46
【问题描述】:
我正在尝试开发一个非常简单的模板化自定义服务器控件,它类似于 GridView。基本上,我希望将控件添加到 .aspx 页面中,如下所示:
<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 来实现它,但我给出了这个非常简单的示例,因为如果我知道如何执行此操作,我将能够开发我需要的控件.谢谢。
【问题讨论】:
标签: asp.net gridview custom-server-controls