首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于Repeater 的三层嵌套有关问题 感兴趣的哥哥姐姐请看看!

2012-04-13 
关于Repeater 的三层嵌套问题 感兴趣的哥哥姐姐请看看!!///第一层asp:Repeater IDRpData runatserve

关于Repeater 的三层嵌套问题 感兴趣的哥哥姐姐请看看!!
///第一层
<asp:Repeater ID="RpData" runat="server" OnItemDataBound="RpData_ItemDataBound">
  <ItemTemplate>
  <table border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td width="20px">
  <div style="height: 10px;">
  </div>
  <div>
  <span style="word-wrap: break-word; word-break: nomal; font-size: 13px; font-weight: bold;">
  <%# Eval("Name")%></span></div>
  <asp:HiddenField ID="PowerID" Value='<%# Eval("ID") %>' runat="server" />
  </td>
  <td>
  <div style="width: 800px; float: left; margin-left: -10px;">
 ///第二层
  <asp:Repeater ID="RpUpid" OnItemDataBound="RpUpid_ItemDataBound" runat="server">
  <ItemTemplate>
  <table border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td width="20px">
  <div style="height: 10px;">
  </div>
  <div>
  <span style="word-wrap: break-word; word-break: nomal; font-size: 13px; font-weight: bold;">
  <%# Eval("Name")%></span></div>
  <asp:HiddenField ID="upid" Value='<%# Eval("ID") %>' runat="server" />
  </td>
  <td>
///////第三层
  <asp:Repeater ID="RpUser" OnItemDataBound="RpUser_ItemDataBound" runat="server">
  <ItemTemplate>
  <div style="text-align: center; margin-left: 10px; margin-top: 10px; float: left;
  background-color: #e5eaf0; height: 55px; width: 100px; border: #666666 1px solid;">
  <div style="text-align: center; margin-top: 0px; vertical-align: middle; height: 30px;
  margin-top: 5px; font-size: 13px;">
  <b>
  <asp:HyperLink ID="hpUser" NavigateUrl='<%# "InOtherBoxList.aspx?UserID=" + Eval("UserID") %>'
  runat="server"><%# Eval("Name") %></asp:HyperLink>
  </b>


  </div>
  <div style="height: 15px; font-size: 13px; margin-top: 0px; text-align: center;">
  <div style="float: left; width: 100px; color: #cd021a;">
  <b>
  <asp:HyperLink ID="hpNumber" style="color: #cd021a;" NavigateUrl='<%# "InOtherBoxList.aspx?UserID=" + Eval("UserID") %>'
  runat="server"><%# Eval("Number") %></asp:HyperLink>
  </b>
  </div>
  </div>
  </div>
  </ItemTemplate>
  </asp:Repeater>
  </td></tr></table>
  </ItemTemplate>
  </asp:Repeater>
  </div>
  </td>
  </table>
  </ItemTemplate>
  </asp:Repeater>


第一层主要读出父类标题
第二层包括子类标题+第三层Repeater(需要判断 无子类标题的 第三层Repeater 直接按照父类ID读数据 这是最蛋疼的)
第三层 根据子类ID 读数据 子类ID>1个
表中有标识 upid 父类=0 子类=父类ID 这样

cs代码
 public new void DataBind()
  {
  DataSet ds = new DataSet();
  ds = objPr.GetList(" upid = 0 Order by Sort");
  RpData.DataSource = ds.Tables[0];
  RpData.DataBind();
  }

  protected void RpData_ItemDataBound(object sender, RepeaterItemEventArgs e)
  {
  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  {
  HiddenField PowerID = (HiddenField)e.Item.FindControl("PowerID");
  DataSet ds = null;
  if (PowerID.Value == "4")
  {
  ds = objPr.GetList("upid<>0 order by sort");
  Repeater RpUpid = (Repeater)e.Item.FindControl("RpUpid");
  RpUpid.DataSource = ds.Tables[0];
  RpUpid.DataBind();
  }
  //else
  //{
  // ds = objPr.GetList("upid = 0 order by sort");
  //}
   
  }
  }


  protected void RpUpid_ItemDataBound(object sender, RepeaterItemEventArgs e)
  {
  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  {
  DataSet ds = null;
  HiddenField PowerID = (HiddenField)e.Item.FindControl("upid");
  //if (pid != 4)
  //{
  // ds = objUser.GetJoinList(0, "a.PowerID = " + pid, "");
  //}
  //else
  //{
  ds = objUser.GetJoinList(0, "a.PowerID = " + PowerID.Value, "");


  //}
  DataTable newdtb = new DataTable();
  newdtb.Columns.Add("ID", typeof(int));
  newdtb.Columns.Add("Name", typeof(string));
  newdtb.Columns.Add("Number", typeof(int));
  newdtb.Columns.Add("UserID", typeof(int));
  newdtb.Columns["ID"].AutoIncrement = true;

  if (ds.Tables[0].Rows.Count > 0)
  {
  foreach (DataRow Dr in ds.Tables[0].Rows)
  {
  DataRow newRow = newdtb.NewRow();
  newRow["Name"] = Dr["Name"];
  newRow["UserID"] = Dr["ID"];
  int Number = objM.GetNotReadCount(Convert.ToInt32(Dr["ID"]));
  newRow["Number"] = Number;
  newdtb.Rows.Add(newRow);
  }
  }
  Repeater RpUser = (Repeater)e.Item.FindControl("RpUser");
  RpUser.DataSource = newdtb;
  RpUser.DataBind();
  pid = 0;
  }
  }

不知道怎么去判断 在第一层的类里如何绑定第三层 在第二层如何获取第一层的隐藏域值  


[解决办法]
+qq一起讨论

热点排行