2010-12-04 40 views
0

更具體地使用下面的示例, 如何使用數據列表「DL_Pro_Result」在C#中查找子數據列表「DL_Gro_Result」?如何使用datalist控件在C#中查找其子數據列表?

例如,在下面的代碼中,即使dli!= null,dlii值也爲null。

DataList dli = (DataList)Page.FindControl("DL_Pro_Result"); 
DataList dlii = (DataList)dli.FindControl("DL_Gro_Result"); 

謝謝。

<div id="ProList"> 
<asp:DataList ID="DL_Pro_Result" runat="server"> 
<HeaderTemplate> 
<table id="T_Pro_Result_Header" runat="server"> 
<tr> 
<td> 
<asp:Label ID="L_Pro_Result_Header" runat="server"></asp:Label> 
</td> 
</tr> 
</table> 
</HeaderTemplate> 
<ItemTemplate> 
<table id="T_Pro_Result_Item" class="table" runat="server"> 
<tr> 
<td> 
<asp:Label ID="L_Pro_Result_Item" runat="server"></asp:Label> 
<asp:Button ID="B_Pro_Result_Item_1" OnClick="B_Pro_Result_Item_1_Click"/> 
</td> 
</tr> 
<tr> 
<td> 
<asp:DataList ID="DL_Gro_Result" runat="server"> 
+0

建議你採取取消縮進你的代碼的時間,所以這是一個有點更具可讀性。 – meagar 2010-12-04 16:45:37

回答

0

解決方案:

DataList dli = (DataList)Page.FindControl("DL_Pro_Result"); 
foreach (Control child in dli.Controls) 
{ 
    foreach (Control child1 in child.Controls) 
    { 
    try 
    { 
    if ((DataList)child1.FindControl("DL_Gro_Result") != null) 
    { 
    DataList dli = (DataList)child1.FindControl("DL_Gro_Result"); 
    } 
    } 
    catch (Exception e) 
    { 
    Trace.Warn("Exception!!", e.ToString() + "Trying next iteration"); 
    } 
    } 
}