首页 新闻 搜索 专区 学院

关于Reapeter里面的Reapeter。。。

0
悬赏园豆:10 [已关闭问题] 关闭于 2014-02-22 14:00

我在Repeater里面又套了个Repeater。。。

为什么在第一个Repeater里面绑定第二个Repeater,只能绑定一行?

<asp:Repeater ID="rptShopList" runat="server" OnItemDataBound="rptShopList_OnItemDataBound">
                    <ItemTemplate>
                        <div class="Itme">
                            <div class="ItmeT">
                                <ul>
                                    <li class="check">
                                        <input type="checkbox" /></li>
                                    <li id="liCompany" runat="server" class="MJname">卖家店名:<%#Eval("Company")%></li>
                                    <li class="MJdz">店铺地址:教工路445号45楼455室 (孙眈眈 15756365725)</li>
                                </ul>
                            </div>
                            <div class="ItmeC">
                                <ul>
<asp:Repeater ID="rptProductList" runat="server" OnItemDataBound="rptProductList_OnItemDataBound">
                    <ItemTemplate>
                                    <li class="ImgName">
                                        <div class="Img">
                                            <img src="../ProductImg/50x50/20140102001.png" /></div>
                                        <div class="Name">
                                            <a href="#">
                                                <%#Eval("ProductName") %>
                                            </a>
                                        </div>
                                    </li>
                                    <li class="gmSl">
                                    <a class="addNum" onclick="UpdateProductNum(1,<%#Eval("RowIndex") %>,<%#Eval("Price")%>)">
                                    </a>
                                        <input id="txtBuyNum" type="text" value='<%#Eval("Count") %>' runat="server" />
                                        <a class="romNum" onclick="UpdateProductNum(2,<%#Eval("RowIndex") %>,<%#Eval("Price")%>)"></a>
                                    </li>
                                    <li class="gmJg" id="liPrice" runat="server"><%#Eval("Price")%></li>
                                    <li class="szJf">
                                        <%#Eval("Bonus")%></li>
                                    <li class="cz"><a id="aDel" runat="server">删除</a></li>
                                    </ItemTemplate>
                                    </asp:Repeater>
                                </ul>
                            </div>
                        </div>
                    </ItemTemplate>
                </asp:Repeater>
/// <summary>
        /// 购物车产品列表
        /// </summary>
        public DataTable ProductsList
        {
            get
            {
                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("RowIndex"));
                dt.Columns.Add(new DataColumn("Company"));
                dt.Columns.Add(new DataColumn("ProductName"));
                dt.Columns.Add(new DataColumn("Price"));
                dt.Columns.Add(new DataColumn("Bonus"));
                dt.Columns.Add(new DataColumn("Count"));

                int n = 0;
                for (int i = 0; i < 5; i++)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        DataRow dr = dt.NewRow();
                        if (i == 0 && j == 0)
                            n = 0;
                        else
                            n += 1;
                        dr["RowIndex"] = n;
                        dr["Company"] = "商店" + (j + 1);
                        dr["ProductName"] = "产品" + (i + 1);
                        dr["Price"] = "1.00";
                        dr["Bonus"] = "1";
                        dr["Count"] = "1";
                        dt.Rows.Add(dr);
                    }
                }

                if (hidIndex.Value != string.Empty)
                    dt.Rows.RemoveAt(int.Parse(hidIndex.Value));

                return dt;
            }
        }
/// <summary>
        /// 购物车商品列表绑定事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rptShopList_OnItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                HtmlGenericControl liCompany = e.Item.FindControl("liCompany") as HtmlGenericControl;
                Repeater rptProductList = e.Item.FindControl("rptProductList") as Repeater;
                DataRow[] dr = ProductsList.Select(string.Format("Company='{0}'", liCompany.InnerText.Replace("卖家店名:", "")));

                rptProductList.DataSource = dr.CopyToDataTable();
                rptProductList.DataBind();

                foreach (RepeaterItem item in rptProductList.Items)
                {
                    HtmlAnchor aDel = item.FindControl("aDel") as HtmlAnchor;

                    aDel.Attributes.Add("class", "a3");
                    aDel.Attributes.Add("style", "cursor:pointer");
                    aDel.Attributes.Add("onclick", string.Format("javascript:DelProduct('{0}');", e.Item.ItemIndex));

                    HtmlInputText txtBuyNum = item.FindControl("txtBuyNum") as HtmlInputText;
                    HtmlGenericControl liPrice = item.FindControl("liPrice") as HtmlGenericControl;
                    Sum += decimal.Parse(txtBuyNum.Value) * decimal.Parse(liPrice.InnerText.Replace("", ""));
                    stgSum.InnerText = Sum.ToString("¥0.00");
                }
            }
        }
以便以谢的主页 以便以谢 | 初学一级 | 园豆:119
提问于:2014-01-21 17:04
< >
分享
所有回答(1)
0

http://www.cnblogs.com/axing/archive/2011/05/12/Repeater.html   我之前做的,参考下

何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2014-01-22 09:35

额,谢谢,我只是想知道为什么我的只能绑定一行。。。。

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2014-01-22 09:43

@以便以谢:  我看你上面往table中添加数据的时候是这样:

   dr["RowIndex"] = n;
                        dr["Company"] = "商店" + (j + 1);
                        dr["ProductName"] = "产品" + (i + 1);
                        dr["Price"] = "1.00";
                        dr["Bonus"] = "1";
                        dr["Count"] = "1";
                        dt.Rows.Add(dr);

5条数据的Company名字都不一样.

下面给内嵌的reapeter的数据源绑定的是:

DataRow[] dr = ProductsList.Select(string.Format("Company='{0}'", liCompany.InnerText.Replace("卖家店名:", "")));

这个dr内容肯定只有一条,所有你绑定内嵌Reapeter肯定只有一条啊~ 你调试下看看这个dr是不是只有一条。

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2014-01-23 11:54

@-Stephen: 是双循环。。。^_^

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2014-01-23 12:58

@以便以谢: rptProductList.DataSource = dr.CopyToDataTable();这个里面有多条数据,显示的时候只有一条?

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2014-01-23 13:43

@-Stephen: 对- -!

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2014-01-23 14:27

@以便以谢:这样。先把rptProductList.DataSource = dr.CopyToDataTable(); rptProductList.DataBind();下面的代码屏蔽掉。看下是否显示正常。因为不清楚你内嵌的Reaeter时间中是否还有其他操作。一步一步调试看看。

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2014-01-23 15:10

@-Stephen: 后面只是给里面的reapeter里面的控件绑定事件。。。

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2014-01-23 15:16

@以便以谢: 我的意思是,单独把绑定内嵌Reapeter那部分独立出来调试。这样才能一步一步排除问题。

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2014-01-23 15:18

@-Stephen: 额。。刚才已经把后面的代码注释了,还是不行,跟后面的代码没关系的。。- -

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2014-01-23 15:30

@以便以谢: 直接自定义一个DataTable,里面随便放上几条数据,然后绑定上去,看是否能全部显示

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2014-01-23 15:35

@-Stephen: 后来我把dr.CopyToDataTable<DataRow>()换成了一个自己定义的DataTable还是不行,我郁闷了

/// <summary>
        /// 购物车产品列表
        /// </summary>
        public DataTable ProductsList
        {
            get
            {
                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("RowIndex"));
                dt.Columns.Add(new DataColumn("Company"));
                dt.Columns.Add(new DataColumn("ProductID"));
                dt.Columns.Add(new DataColumn("ProductName"));
                dt.Columns.Add(new DataColumn("SaleUserID"));
                dt.Columns.Add(new DataColumn("ProductImg"));
                dt.Columns.Add(new DataColumn("Price"));
                dt.Columns.Add(new DataColumn("Bonus"));
                dt.Columns.Add(new DataColumn("Count"));

                int n = 0;
                for (int i = 0; i < 5; i++)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        DataRow dr = dt.NewRow();
                        if (i == 0 && j == 0)
                            n = 0;
                        else
                            n += 1;
                        dr["RowIndex"] = n;
                        dr["Company"] = "商店" + (j + 1);
                        dr["ProductID"] = j + 1;
                        dr["ProductName"] = "产品" + (i + 1);
                        dr["SaleUserID"] = j + 1;
                        dr["ProductImg"] = "../ProductImg/50x50/20140102001.png";
                        dr["Price"] = "1.00";
                        dr["Bonus"] = "1";
                        dr["Count"] = "1";
                        dt.Rows.Add(dr);
                    }
                }

                if (hidIndex.Value != string.Empty)
                    dt.Rows.RemoveAt(int.Parse(hidIndex.Value));

                return dt;
            }
        }

rptProductList.DataSource = ProductsList;
支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2014-01-23 15:54

@以便以谢:新的 DataTable中也是多条数据,然后界面只显示1条???这么奇怪,你搜索下代码看是不是还有其他地方在处理那个内嵌的Reapeter~~

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:368 (菜鸟二级) | 2014-01-23 16:01

@-Stephen: 就是在行绑定里面处理,其他地方没有。。。

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2014-01-23 16:12

@-Stephen: 原来是样式里面把高度设定死了。。。下面的行没显示出来。。。本来应该循环div,我循环的ul,ul的高度是死的。。。

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2014-03-06 15:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册