我做出来的最后一层显示不出来,请高手指点!
图形如下:河道署
     实时数据
         口 河闸
         口 河道
     SDE图层
         口河道设计断面图
         口河道横断面图
水文署
     实时数据
         口 河闸
         口 河道
     SDE图层
         口河道设计断面图
         口河道横断面图我的页面代码:
<asp:repeater id="RepeaterRoot" runat="server">
<HeaderTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="80%">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="tdnormal">
<%# DataBinder.Eval(Container.DataItem,"RootID")%>
</td>
</tr>
<tr>
<td>
<asp:Repeater ID="RepeaterFather" Runat="server" OnItemDataBound="RepeaterFather_ItemDataBound">
<HeaderTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="98%" align="right">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="tdnormal">
<%# DataBinder.Eval(Container.DataItem,"FatherID")%>
</td>
</tr>
<tr>
<td>
<asp:Repeater ID="RepeaterChild" Runat="server">
<HeaderTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="98%" align="right">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="tdnormal">
<asp:CheckBoxList ID="check" Runat="server" DataTextField='<%# DataBinder.Eval(Container.DataItem,"ChildID")%>' DataValueField='<%# DataBinder.Eval(Container.DataItem,"ChildValue")%>'>
</asp:CheckBoxList>
</ItemTemplate>
<FooterTemplate>
</td>
</tr>
</table>
</FooterTemplate> </asp:Repeater> </ItemTemplate>
<FooterTemplate>
</td> </tr> </table>
</FooterTemplate>
</asp:repeater> </ItemTemplate>
<FooterTemplate>
</td></tr></table>
</FooterTemplate>
</asp:repeater>
后台代码:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
dbHandle = new SqlClient();
RepeaterRoot.DataSource = dbHandle.GetDataTable("select DISTINCT RootID from exchangeplatform.tbNavigate");
if (!IsPostBack)
{
RepeaterRoot.DataBind();
}
GroupID.Text=administratorID();
}
#region 验证父节点和子节点的repeater控件
private void RepeaterRoot_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string rootID = ((DataRowView)e.Item.DataItem)[0].ToString();
Repeater father = (Repeater)e.Item.FindControl("RepeaterFather");
if (father != null)
{
father.DataSource = dbHandle.GetDataTable("select DISTINCT FatherID from exchangeplatform.tbNavigate where RootID = '"+ rootID +"'");
father.DataBind();
}
}
} public void RepeaterFather_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string fatherID = ((DataRowView)e.Item.DataItem)[0].ToString();
Repeater child = (Repeater)e.Item.FindControl("RepeaterChild");

if (child != null)
{
child.DataSource = dbHandle.GetDataTable("select DISTINCT ChildID,ChildValue from exchangeplatform.tbNavigate where FatherID = '"+ fatherID +"'");
child.DataBind();
//
}
}
}
#endregion

解决方案 »

  1.   


    页面代码:   
             <table>
             <tr>
             <td>
             <asp:repeater id="RepeaterRoot" runat="server"> <HeaderTemplate> <table border="0" cellpadding="0" cellspacing="0" width="80%">
    </HeaderTemplate> <ItemTemplate> <tr> <td class="tdnormal"> <%# DataBinder.Eval(Container.DataItem,"RootID")%> </td> </tr> <tr> <td> <asp:Repeater ID="RepeaterFather" Runat="server" OnItemDataBound="RepeaterFather_ItemDataBound"> <HeaderTemplate> <table border="0" cellpadding="0" cellspacing="0" width="98%" align="right"> </HeaderTemplate> <ItemTemplate> <tr> <td class="tdnormal"> <%# DataBinder.Eval(Container.DataItem,"FatherID")%> </td> </tr> <tr> <td> <asp:Repeater ID="RepeaterChild" Runat="server" OnItemDataBound="RepeaterChild_ItemDataBound"> <HeaderTemplate> <table border="0" cellpadding="0" cellspacing="0" width="98%" align="right"> </HeaderTemplate> <ItemTemplate> <tr> <td class="tdnormal"><asp:CheckBoxList Runat="server" ID="check"></asp:CheckBoxList> </ItemTemplate> <FooterTemplate> </td> </tr>
             </table>
    </FooterTemplate> 
             </asp:Repeater>
             </ItemTemplate>
    <FooterTemplate> </td> 
             </tr>
             </table>
    </FooterTemplate>
    </asp:repeater>
             </ItemTemplate>
             <FooterTemplate>
    </td>
             </tr>
             </table>
    </FooterTemplate>
    </asp:repeater>
             </td>
             </tr>
             </table>
    后台代码:
         private void Page_Load(object sender, System.EventArgs e)
          {
             // 在此处放置用户代码以初始化页面
    dbHandle = new SqlClient();
    string sql = "select DISTINCT RootID from exchangeplatform.tbNavigate";
    RepeaterRoot.DataSource = dbHandle.GetDataTable(sql);
    if (!IsPostBack)
    {
            RepeaterRoot.DataBind();//邦定第一层repeater
    }
    }
    #region 验证父节点和子节点的repeater控件  private void RepeaterRoot_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
             {
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
       {
    string rootID = ((DataRowView)e.Item.DataItem)[0].ToString();
    Repeater father = (Repeater)e.Item.FindControl("RepeaterFather");
    if (father != null)
      {
                          string sql = "select DISTINCT FatherID from  exchangeplatform.tbNavigate where RootID = '"+ rootID +"'";
        father.DataSource = dbHandle.GetDataTable(sql);
        father.DataBind();
       }
        }
    }   public void RepeaterFather_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
       string fatherID = ((DataRowView)e.Item.DataItem)[0].ToString();
       Repeater child = (Repeater)e.Item.FindControl("RepeaterChild");
       if (child != null)
          {
                               string sql = "select DISTINCT ChildID from exchangeplatform.tbNavigate where FatherID = '"+ fatherID +"'";
             child.DataSource = dbHandle.GetDataTable(sql);          child.DataBind();
          }
     }
    }    public void RepeaterChild_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {    
         if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    string childID = ((DataRowView)e.Item.DataItem)[0].ToString();
    string sql = "select DISTINCT FatherID from exchangeplatform.tbNavigate where ChildID = '"+ childID +"'";
    string fatherID = dbHandle.GetDataTable(sql).Rows[0][0].ToString();
    sql = "select DISTINCT ChildID,ChildValue from exchangeplatform.tbNavigate where FatherID = '"+ fatherID +"'";
    DataTable dataTable = dbHandle.GetDataTable(sql);
    CheckBoxList checkBoxList = (CheckBoxList)e.Item.FindControl("check");
    if(dataTable.Rows.Count != 0)
     {
    checkBoxList.DataSource = dataTable;
    checkBoxList.DataTextField = "ChildValue";
    checkBoxList.DataValueField = "ChildID";
    checkBoxList.DataBind();
     }
    }
    }

    #endregion
    //循环遍历获得被选中CHeckboxList的值,把下面代码放在Button事件中就可以了CheckBoxList checkBoxList = new CheckBoxList();
     for(int i =0;i<RepeaterRoot.Items.Count; i++)
         {
             RepeaterItem  rootItem = (RepeaterItem)RepeaterRoot.Items[i];
    Repeater father = (Repeater)rootItem.FindControl("RepeaterFather");
    for(int j=0; j<father.Items.Count;j++)
    {
             RepeaterItem fatherItem = (RepeaterItem)father.Items[j];
    Repeater child = (Repeater)fatherItem.FindControl("RepeaterChild");
    for(int k=0; k<child.Items.Count; k++)
    {
      RepeaterItem childItem = (RepeaterItem)child.Items[k];
      checkBoxList = (CheckBoxList)childItem.FindControl("check");
      for(int l = 0; l<checkBoxList.Items.Count; l++)
    {
      if(checkBoxList.Items[l].Selected)
       {
     Response.Write(checkBoxList.Items[l].Text);    
       }

    }
    }
    }
       }