请教:如何在repeater中动态生成模板。
根据用户要求要动态的生成模板。模板个数不定,所以不能在HTML中固定这样的绑定:
<%# DataBinder.Eval(Container.DataItem, "ID")%>
在网上查了查大有些DATAGRID的例子。但是相对repeater还是有些区别。
特别是:
http://dotnet.aspx.cc/ShowDetail.aspx?id=B131BF6E-B35B-413C-9DCE-E755242FA795
兄弟看了想换成rapeater还是困难,所以向大家请教。。最好求些例子。我的愿意是在这里绑定:很显然我的想法完全错误。这些绑定的结果只是客户端HTML而已。
private void Repeater1_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
HtmlTableCell cell = (HtmlTableCell)e.Item.FindControl("tdd");
if(cell != null)
{
HtmlTable t = new HtmlTable();
HtmlTableRow tr = new HtmlTableRow();
for (int i=0;i<Num;i++)
{
HtmlTableCell td = new HtmlTableCell();
td.Width = (100/Num).ToString()+"%";
td.Align="Conter";
td.InnerHtml = "<%# DataBinder.Eval(Container.DataItem, \""+arr[i]+"\")%>";
tr.Cells.Add(td);
t.Rows.Add(tr);
}
cell.Controls.Add(t);
}
}
}
根据用户要求要动态的生成模板。模板个数不定,所以不能在HTML中固定这样的绑定:
<%# DataBinder.Eval(Container.DataItem, "ID")%>
在网上查了查大有些DATAGRID的例子。但是相对repeater还是有些区别。
特别是:
http://dotnet.aspx.cc/ShowDetail.aspx?id=B131BF6E-B35B-413C-9DCE-E755242FA795
兄弟看了想换成rapeater还是困难,所以向大家请教。。最好求些例子。我的愿意是在这里绑定:很显然我的想法完全错误。这些绑定的结果只是客户端HTML而已。
private void Repeater1_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
HtmlTableCell cell = (HtmlTableCell)e.Item.FindControl("tdd");
if(cell != null)
{
HtmlTable t = new HtmlTable();
HtmlTableRow tr = new HtmlTableRow();
for (int i=0;i<Num;i++)
{
HtmlTableCell td = new HtmlTableCell();
td.Width = (100/Num).ToString()+"%";
td.Align="Conter";
td.InnerHtml = "<%# DataBinder.Eval(Container.DataItem, \""+arr[i]+"\")%>";
tr.Cells.Add(td);
t.Rows.Add(tr);
}
cell.Controls.Add(t);
}
}
}
解决方案 »
- web页面加载时友情提示...
- asp.net中.ascx文件重定向问题
- autocomplete问题 第一次写autocomplete这个东西 有点模糊 各位看看帮帮忙啦 上次贴子回复3次了
- 怎么显示这样的小组数据
- 当点击button控件选取父节点时,treeview控件会叠加的问题
- 新手求助,ASP.net如何连接MDB数据库?
- 求一日期控件但必需有时间选择!
- 請高手优化
- 如何打开一个文件浏览框并选取其中的文件?
- 关注者都有分!!!——————讨论讨论!!!!
- .net调用自带的System.web.mail发邮,用21cn.com发可以,用sina.com发就不行。为什么,怎解决。
- datagrid中的列自动换行问题?
如果你想完全地在内存中创建一个的模板,你不得不首先编码,然后实例化一个类,该类实现ITemplate接口. ITemplate接口只有一个方法,名为InstantiateIn. asp.net中所有具有template属性的服务器控件都通过这个属性暴露实现了ITemplate接口的类.这个接口简单地定义了用于组合与模板一致的子控件的实例的方法来填充容器控件.图11演示了实现itemplate接口大部分的代码,它为一个datagrid在内存中创建了一个的模板列.同样,也可以把这些代码用于datalist和repeater控件中。唯一不同的是在OnDataBinding事件处理上。类的结构你可以写成类似下面:
class LastFirstNameTemplate : ITemplate
{
public void InstantiateIn(Control container)
{...} private void BindLastName(Object s, EventArgs e)
{...} private void BindFirstName(Object s, EventArgs e)
{...}
}Figure 11 In-memory Templated Column
// 动态的创建模板列函数
public void AddTemplateColumnFromITemplate(String strHeader)
{
TemplateColumn bc = new TemplateColumn();
bc.HeaderText = strHeader;
bc.ItemTemplate = new LastFirstNameTemplate();
grid.Columns.Add(bc);
}// 这个类实现了一个自定义模板。新控件与容器本身的控件组合创建一个新的模板类,如// 果控件要绑定数据,你可以注册你自己的绑定处理事件(OnDataBinding事件)
public class LastFirstNameTemplate : ITemplate
{ // Instantiate the elements of the template in the given
// container. In this case, a DataGridItem element. public void InstantiateIn(Control container)
{
container.Controls.Add(new LiteralControl("<b>")); Label lblLastName = new Label();
lblLastName.DataBinding += new EventHandler(this.BindLastName);
container.Controls.Add(lblLastName); container.Controls.Add(new LiteralControl("</b>, ")); Label lblFirstName = new Label();
lblFirstName.DataBinding += new EventHandler(this.BindFirstName);
container.Controls.Add(lblFirstName);
} // Handler of the OnDataBinding event for the Label element
// that renders the lastname column in the template. private void BindLastName(Object sender, EventArgs e)
{
Label l = (Label) sender;
DataGridItem container = (DataGridItem) l.NamingContainer;
l.Text = ((DataRowView)container.DataItem)
["lastname"].ToString();
} // Handler of the OnDataBinding event for the Label element
// that renders the firstname column in the template. private void BindFirstName(Object sender, EventArgs e)
{
Label l = (Label) sender;
DataGridItem container = (DataGridItem) l.NamingContainer;
l.Text = ((DataRowView)container.DataItem)
["firstname"].ToString();
}
}
根据用户要求要动态的生成模板。模板个数不定,所以不能在HTML中固定这样的绑定:
<%# DataBinder.Eval(Container.DataItem, "ID")%>
在网上查了查大有些DATAGRID的例子。但是相对repeater还是有些区别。
特别是:
http://dotnet.aspx.cc/ShowDetail.aspx?id=B131BF6E-B35B-413C-9DCE-E755242FA795
兄弟看了想换成rapeater还是困难,所以向大家请教。。最好求些例子。我的愿意是在这里绑定:很显然我的想法完全错误。这些绑定的结果只是客户端HTML而已。
private void Repeater1_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
HtmlTableCell cell = (HtmlTableCell)e.Item.FindControl("tdd");
if(cell != null)
{
HtmlTable t = new HtmlTable();
HtmlTableRow tr = new HtmlTableRow();
for (int i=0;i<Num;i++)
{
HtmlTableCell td = new HtmlTableCell();
td.Width = (100/Num).ToString()+"%";
td.Align="Conter";
td.InnerHtml = "<%# DataBinder.Eval(Container.DataItem, \""+arr[i]+"\")%>";
tr.Cells.Add(td);
t.Rows.Add(tr);
}
cell.Controls.Add(t);
}
}
}
我就是这样干的
兄台请细细说来!
asp里的循环读取然后自己写出来!
用原始的方法吧!):
asp里的循环读取然后自己写出来!说实话ASP我只是能改改。兄台能不能把思路说说。。我是用孟老大的http://dotnet.aspx.cc/ShowDetail.aspx?id=B131BF6E-B35B-413C-9DCE-E755242FA795方法。做了。。
http://www.c-sharpcorner.com/Code/2003/June/AddItemTemplateDynamically.asp