想用一个DataList内嵌一个Repeater控件,来显示不同的月份的某类信息列表,DataList绑定月份,Repeater绑定该月的信息列表。
首先我用一个DataList控件DataList1绑定了一个HashTable,建立HashTable的代码如下:
                  private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
// 在此处放置用户代码以初始化页面
int nowMonth=DateTime.Now.Month;//当前月
System.Collections.Hashtable ht=new Hashtable();
//ArrayList al=new ArrayList();
//al.Add(

for(int i=nowMonth;i>nowMonth-4;i--)//近4个月
{
ht.Add(GetKeyName(i),i);
}
this.DataList1.DataSource=ht;
this.DataList1.DataBind();
}
}                private string GetKeyName(int i)//取得月的中文名
{
string monthName="";
switch(i)
{
case 1:
monthName="一";
break;
case 2:
monthName="二";
break;
case 3:
monthName="三";
break;
case 4:
monthName="四";
break;
case 5:
monthName="五";
break;
case 6:
monthName="六";
break;
case 7:
monthName="七";
break;
case 8:
monthName="八";
break;
case 9:
monthName="九";
break;
case 10:
monthName="十";
break;
case 11:
monthName="十一";
break;
case 12:
monthName="十二";
break;
}
return monthName;
},并且在DataList1控件中放有一个Label控件,该Label控件绑定了HashTable的值,代码如下:
<asp:Label id="Label1" runat="server"><%#DataBinder.Eval(Container.DataItem,"Value")%></asp:Label>,
运行的时候可以显示出这个Label中所绑定的值,但是我想在DataList1控件的数据绑定事件中,要根据这个Label的值来取得数据库中数据绑定给内嵌的Repeater控件,问题是取不到这个Label的值,代码如下:
                  private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
Response.Write("Label1:"+((Label)e.Item.FindControl("Label1")).Text+"<br>");
}
输出是空,