鱼跃千里

 

DataList等控件嵌套绑定的一个需要注意的地方

        前两天刚刚搞定了DataList的嵌套绑定,结果今天用的时候就一直出问题,每次执行都找不到指定的控件,给我一个NULL的异常.(点这里看"DataList嵌套绑定数据")
       为什么找不到控件呢,使用的东西都一模一样.研究了好半天,才发现原来是一个ListItemType的问题,上次我使用的时候,就直接用的ItemTemplate,看代码,没有在ItemTemplate之前再有其他的Template
Code

所以就可以直接在代码中使用
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    
{
        
string f = ((Label)e.Item.FindControl("Label1")).Text;
      //具体操作代码
}
结果今天用的时候,为什么总是有一个"NULL-----"异常呢,原来,我在datalist里面用了一下HeaderTemplate,结果在HeaderTemplate绑定数据完成时就去查找控件,这时候ItemTemplate中的控件还没有加载,当然就找不到了.代码:
Code

所以要在DataList的绑定事件中加一个判断,判断一下是否是ItemTemplate的绑定事件,重要的就是那个ListItemType
1 protected void dlistOut_ItemDataBound(object sender, DataListItemEventArgs e)
2    {
3        if(e.Item.ItemType==ListItemType.Item)
4        {
5             string qid = ((Label)e.Item.FindControl("lblQID")).Text;
6         //具体操作代码
7             }

8          }

在GridView中有点点不一样,应该用的是DataControlRowType
void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  
{
        
    
if(e.Row.RowType == DataControlRowType.DataRow)
    
{
      
// Display the company name in italics.
      e.Row.Cells[1].Text = "<i>" + e.Row.Cells[1].Text + "</i>";
        
    }
    
  }


posted on 2008-06-03 20:30  鱼跃千里  阅读(3054)  评论(7编辑  收藏  举报

导航