日期:2014-05-18  浏览次数:20470 次

请问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,那么就在其中查找有关控件