当前位置: 代码迷 >> ASP.NET >> 请教datalist有关问题
  详细解决方案

请教datalist有关问题

热度:5780   发布时间:2013-02-25 00:00:00.0
请问datalist问题
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
  {
  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  {
  HyperLink hk1 = (HyperLink)e.Item.FindControl("HyperLink1");
  hk1.Attributes.Add("onclick", "tshow('" + hk1.NavigateUrl.ToString() + "')");
  }
  }

请问
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
这句话什么意思
为什么不加
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

就会报对象没实例的错误 ...

------解决方案--------------------------------------------------------
在DataList中,有:
ItemTemplate
AlternateItemTemplate
HeaderTemplate
FooterTemplate
SeperatorTemplate
SeletedTemplate
等等的模板,如果不加
if (e.Item.ItemType == ListItemType.Item ¦ ¦ e.Item.ItemType == ListItemType.AlternatingItem) 
那么会在HeaderTemplate也会去搜索HyperLink1这个控件(HyperLink hk1 = (HyperLink)e.Item.FindControl("HyperLink1"); ),而在HeaderTemplate中根本不存在这个控件,所有hk1为null,所以会报错

------解决方案--------------------------------------------------------
表明如果DataListItem是ItemTemplate或者AlternatingItem,那么就在其中查找有关控件