做一个商品分类显示的功能,两个repeater嵌套
代码如下:cs code:using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Repeater : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Repeater1绑定
        BLLProduct exm = new BLLProduct();
        DataTable dt = exm.selectIndex();
        this.Repeater1.DataSource = dt;
        Repeater1.DataBind();
    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            //实力化Repeater2
            Repeater rep = e.Item.FindControl("Repeater2") as Repeater;
            //实例化Repeater1的行
            DataRowView rowv = (DataRowView)e.Item.DataItem;
            //取datatlist1行值
            string mainID = rowv["MAIN_TYPE_ID"].ToString();            if (mainID != "")
            {
                //绑定Repeater2数据
                BLLProduct exm = new BLLProduct();
                DataTable dt = exm.selectIndexSub(mainID);//获取从数据。 
                if (dt != null)
                {
                    try
                    {
                        rep.DataSource = dt;<----这里VS报错,没有DataSource的定义
                        rep.DataBind();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
            }
        }
    }
}aspx code:
  <table border="0" cellpadding="0" cellspacing="0" style="margin-bottom: 5px" width="100%">
    <asp:Repeater runat="server" ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound">
        <ItemTemplate>
            <tr>
                <td class="fb">
                   <a href="../Book/Bookjdshow.aspx?lbid= <%# Eval("ProductId")%>&cs=<%# Eval("MAIN_TYPE_ID")%>" style="color: black;font-weight: bold; font-size:14px;" > <%# Eval("TYPE_NAME")%> </a>
                </td>
            </tr>
            <tr>
                <td>
                        <asp:Repeater runat="server" ID="Repeater2">
                            <ItemTemplate>
                                  <a href="../Book/Bookjdshow.aspx?lbid= <%# Eval("ProductId") %>&cs=0" style="font-size:12px;"> 
                            <%# Eval("TYPE_NAME")%> </a> <br />
                            </ItemTemplate>
                        </asp:Repeater>
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>参考页面:http://b2b.smeyz.gov.cn/,顺便问下,像这个网站这样,repeater分两列显示数据,并且蓝白相间,谁有什么思路?这两功能任意一种单独实现我都会,搞在一起我就弄不出来了

解决方案 »

  1.   

    分两列就是用repeater循环两列,把查出的数据绑定到列上,至于蓝白相间, repeater本身就有隔行换色摸版,设定一下就可以了
      

  2.   

    因为你的页面类也是叫Repeater,所以
    Repeater rep = e.Item.FindControl("Repeater2") as Repeater; 
    这样写rep是指你的页面类对象,解决办法有两个:
    1、把你的页面类改个名字
    2、上面那句改成这样:
    System.Web.UI.WebControls.Repeater rep = e.Item.FindControl("Repeater2") as System.Web.UI.WebControls.Repeater;