请问如何给嵌套datalist中的label赋值
结构是这样的:
<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,请问该怎么做,谢谢!
[解决办法]
这样可以取处理,但是,如果没有数据源的操作,最好在里面不要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>