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
在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>";
}
}
为什么找不到控件呢,使用的东西都一模一样.研究了好半天,才发现原来是一个ListItemType的问题,上次我使用的时候,就直接用的ItemTemplate,看代码,没有在ItemTemplate之前再有其他的Template
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
所以就可以直接在代码中使用
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
所以要在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
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
在GridView中有点点不一样,应该用的是DataControlRowType
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)