遇到关于动态列的问题?

gzldtec 2011-02-23 11:08:57
<%@ Register Src="~/ListItem.ascx" TagName="ListItem" TagPrefix="Items" %>
<asp:DataList ID="TableList" runat="server" Width="100%" CellPadding="0" CellSpacing="0">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<Items:ListItem ID="Items" runat="server" />
</ItemTemplate>
</asp:DataList>

说明:
表table1 字段field1,field2...field10
表table2 字段 field_name 用来存table1的字段名
DataList 已经绑定数据源
ListItem.ascx文件根据TABLE2表的行,返回代码
<td><%#Eval("field1")%></td>
<td><%#Eval("field2")%></td>
.....
<td><%#Eval("field10")%></td>

问题:
页面上依然 <td><%#Eval("field1")%></td>,没有取到数据。
如果直接这样写 <ItemTemplate><td><%#Eval("field1")%></td></ItemTemplate> 能取到数据。
或者说有其他更好解决动态列的办法。
...全文
51 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzldtec 2011-03-11
  • 打赏
  • 举报
回复
结贴 结贴!
用其他方法解决了
wuyq11 2011-02-23
  • 打赏
  • 举报
回复
动态添加DataList
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();

用户控件属性 bh= ' <%# Eval( "编号 ")%> '
笑道江湖情 2011-02-23
  • 打赏
  • 举报
回复
<ItemTemplate>
...
</ItemTemplate>
子夜__ 2011-02-23
  • 打赏
  • 举报
回复
<td><%#Eval("field1")%></td>
<td><%#Eval("field2")%></td>
.....
<td><%#Eval("field10")%></td>

你的这些代码都要被<ItemTemplate>包含

<Items:ListItem ID="Items" runat="server" />可替换一个类似LABEL的控件

然后后台拼接HTMLstr
public static string str="";
str+="<td><%#Eval("field1")%></td>";


前台绑定

<%#= str%>

gzldtec 2011-02-23
  • 打赏
  • 举报
回复
都试过了,不行呀。痛苦 郁闷

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧