创建一个DataList:
DataList dl=new DataList();
然后用Page.LoadTemplate载入模板ItemTemplate.ascx:
dl.ItemTemplate = Page.LoadTemplate("ItemTemplate.ascx");
ItemTemplate.ascx的代码如下:
<table>
<tr>
<td>
<%#Eval("title") %>
</td>
</tr>
</table>然后在页面上显示:
this.form1.Controls.Add(dl);但是
报错"Eval()、XPath() 和 Bind() 这类数据绑定方法只能在页包含的控件中使用。 "我如何在不进行大的修改前提(比如只修改ItemTemplate.ascx里的东西)下解决上面这样一个问题?谢谢!
DataList dl=new DataList();
然后用Page.LoadTemplate载入模板ItemTemplate.ascx:
dl.ItemTemplate = Page.LoadTemplate("ItemTemplate.ascx");
ItemTemplate.ascx的代码如下:
<table>
<tr>
<td>
<%#Eval("title") %>
</td>
</tr>
</table>然后在页面上显示:
this.form1.Controls.Add(dl);但是
报错"Eval()、XPath() 和 Bind() 这类数据绑定方法只能在页包含的控件中使用。 "我如何在不进行大的修改前提(比如只修改ItemTemplate.ascx里的东西)下解决上面这样一个问题?谢谢!
DataList list = new DataList();
list.ItemTemplate = Page.LoadTemplate("A.ascx");
list.ItemDataBound += new DataListItemEventHandler(list_ItemDataBound);
list.DataSource = dt;
list.DataBind();void list_ItemDataBound(object sender, DataListItemEventArgs e)
{
Control ctrl = e.Item.Controls[0];
Label lbl = (Label)ctrl.FindControl("lbl");
lbl.Text = DataBinder.Eval(e.Item.DataItem, "name").ToString();
}class MyTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
Literal lbl = new Literal();
lbl.DataBinding += new EventHandler(lbl_DataBinding);
container.Controls.Add(lbl);
}
private void lbl_DataBinding(object sender, EventArgs e)
{
Literal lbl = (Literal)sender;
lbl.Text = "<a href=\"" + DataBinder.Eval(((DataListItem)lbl.NamingContainer).DataItem, "Link").ToString() + "\">" + DataBinder.Eval(((DataListItem)lbl.NamingContainer).DataItem, "Name").ToString() + "</a>";
}
datalist.ItemTemplate = new MyTemplate();