请问如何给嵌套datalist中的label赋值

windy_wzh 2007-09-13 05:50:44
结构是这样的:
<asp:datalist id="DlsMen" runat="server" OnItemDataBound="GetMenSub" RepeatColumns="2">
<ItemTemplate>
<A href="#"><%#DataBinder.Eval(Container.DataItem,"class_name")%></A> <asp:datalist id="DlsMenSub" runat="server"> <HeaderTemplate> <asp:Label id="menTitle" runat="server">Label</asp:Label> </HeaderTemplate>
<ItemTemplate>
<%# SZ16.BLL.head.GetSubString(DataBinder.Eval(Container.DataItem,"info_title").ToString(),30)%> </ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:datalist>

</ItemTemplate>
</asp:datalist>

请问怎样在OnItemDataBound方法中给menTitle赋值,我想在OnItemDataBound方法中用Label menTitle = (Label)e.Item.FindControl("menTitle")来得到Label,然后再赋值,但找不到 menTitle 这个Label,请问该怎么做,谢谢!
...全文
266 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
windy_wzh 2007-09-14
  • 打赏
  • 举报
回复
谢谢net_lover(【孟子E章】)
孟子E章 2007-09-14
  • 打赏
  • 举报
回复
这样可以取处理,但是,如果没有数据源的操作,最好在里面不要DataList
使用例子

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
// 计算数据,完全可以从数据看取得
ICollection CreateDataSourceByXianhuiMeng( )
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));

for (int i = 0 ; i < 8 ; i++)
{
System.Random rd = new System.Random(Environment.TickCount * i); ;
dr = dt.NewRow();
dr[0] = "班级" + i.ToString();
dr[1] = "【孟子E章】" + i.ToString();
dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);
return dv;
}

protected void Page_Load( object sender, EventArgs e )
{
if (!Page.IsPostBack)
{
DataList1.DataSource = CreateDataSourceByXianhuiMeng();
DataList1.DataBind();
}
}

protected void DataList1_ItemDataBound( object sender, DataListItemEventArgs e )
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

DataList d = (DataList)e.Item.FindControl("mxh");
if (d != null)
{
d.DataSource = CreateDataSourceByXianhuiMeng();
d.DataBind();

Label l = (Label)d.Controls[0].FindControl("menTitle");
l.Text = "测试啊测试啊测试啊测试啊测试啊";
}
}
}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<a href="#">
<%#DataBinder.Eval(Container.DataItem, "学生姓名")%>
</a>
<asp:DataList ID="mxh" runat="server">
<HeaderTemplate>
<asp:Label ID="menTitle" runat="server">Label</asp:Label>
</HeaderTemplate>
<ItemTemplate></ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</html>
windy_wzh 2007-09-14
  • 打赏
  • 举报
回复
To:net_lover(【孟子E章】)
我是想过先FindControl("DlsMenSub"),再找Label,但不知怎么写,能否说得详细一点,谢谢!
孟子E章 2007-09-14
  • 打赏
  • 举报
回复
或者里面的DataList也添加 OnItemDataBound事件
孟子E章 2007-09-14
  • 打赏
  • 举报
回复
你应该先FindControl("DlsMenSub")再去找Label
Randallsu 2007-09-14
  • 打赏
  • 举报
回复
关注~
windy_wzh 2007-09-14
  • 打赏
  • 举报
回复
谢谢honey52570(steven hu):
可这样还是不行,如果在第一层里面可能可以这样取,可在第二层里取不到啊,还有没有其它方法呢
honey52570 2007-09-13
  • 打赏
  • 举报
回复
try

if(e.Item.ItemType == ListItemType.Header)
{
Label menTitle = (Label)e.Item.FindControl("menTitle")
}
honey52570 2007-09-13
  • 打赏
  • 举报
回复
sf

62,046

社区成员

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

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

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

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