做到这样一个项目,要给客户显示两级资讯类别,那我就选择用Repeater里放再放一个Repeater,循环读出并显示两级的资讯类别名称,并通过链接里的BID和SID来将资讯类别的ID传递到新的页面里去。
可是碰到这样的一个问题:里面的Repeater取不到外边的Repeater取得的资讯类别名称。后来,实在是没办法了,用了一个笨办法,设了一定变量,用来存储这个ID值,代码如下:
正面:
<asp:Repeater ID="Re_Article_Type_List_B" runat="server" OnItemDataBound="Re_Article_Type_List_B_ItemDataBound">
<ItemTemplate>
<tr>
<td height="23">
<div align="center">
<img src="images/left.gif" width="10" height="10" /></div> </td>
<td height="23">
<table width="95%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20" style="cursor: hand" οnmοuseοver="this.style.borderStyle='solid';this.style.borderWidth='1';borderColor='#7bc4d3'; "
οnmοuseοut="this.style.borderStyle='none'">
<span class="STYLE3"><asp:Label ID="Article_Type_ID" runat="server" Text='<%#Eval("Article_Type_ID")%>' Visible="False"></asp:Label><a href="Article_List.aspx?BigTypeId=<%#Eval("Article_Type_ID")%>" target="Content"><asp:Label ID="Article_Type_Name" runat="server" Text='<%#Eval("Article_Type_Name")%>'></asp:Label></a></span></td>
</tr>
</table> </td>
</tr>
<asp:Repeater ID="Re_Article_Type_List_S" runat="server">
<ItemTemplate>
<tr>
<td height="23">
<div align="center">
├</div> </td>
<td height="23">
<table width="95%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20" style="cursor: hand" οnmοuseοver="this.style.borderStyle='solid';this.style.borderWidth='1';borderColor='#7bc4d3'; "
οnmοuseοut="this.style.borderStyle='none'">
<span class="STYLE3"><a href="Article_List.aspx?BigTypeId=<%# BID %>&SmallTypeId=<%#Eval("Article_Type_ID")%>" target="Content"><asp:Label ID="Article_Type_Name" runat="server" Text='<%#Eval("Article_Type_Name")%>'></asp:Label></a></span></td>
</tr>
</table> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
反面:
public string BID="";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Regular.islogin();
getArticle_Type();
}
}
protected void Re_Article_Type_List_B_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
//显示子类别
Repeater EAT2 = (Repeater)e.Item.FindControl("Re_Article_Type_List_S");
Label AID = (Label)e.Item.FindControl("Article_Type_ID");
DataSet ds2 = SqlHelper.ExecuteDateSet(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, "select Article_Type_ID,Article_Type_Name from Article_Type where Article_Type_Father=" + AID.Text + " order by Article_Type_Id", null);
EAT2.DataSource = ds2;
//GetBigId.Text = AID.Text;
//FindControl("Article_Type_ID").ToString()
BID = AID.Text;
EAT2.DataBind();
}
protected void getArticle_Type()//显示一级类别
{
DataSet ds = SqlHelper.ExecuteDateSet(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, "select Article_Type_ID,Article_Type_Name from Article_Type where Article_Type_Father=0 order by Article_Type_Id", null);
Re_Article_Type_List_B.DataSource = ds;
Re_Article_Type_List_B.DataBind();
}