C# 是否为中继器中的每组项目显示标题?

C# 是否为中继器中的每组项目显示标题?,c#,sitecore,repeater,C#,Sitecore,Repeater,我有一个ProductOrder review页面,该页面显示用户输入的任何内容的列表。所需的是每个产品或产品分组所属位置的名称(即,如果用户从“桌子”列表下选择了3种产品,则这三种产品应显示在订单审核页面的“桌子”标题下。如果用户从“大厅”下购买了5件物品列表中,则这5种产品应显示在订单审核页面的标题“大厅”下) 目前,我可以获得正确的标题文本,但文本会在每个项目中重复(即标题“桌面”显示在“桌面”列表下订购的3个项目的上方)。我希望每个项目/项目分组只显示一次,但我不确定如何执行 我使用中继

我有一个ProductOrder review页面,该页面显示用户输入的任何内容的列表。所需的是每个产品或产品分组所属位置的名称(即,如果用户从“桌子”列表下选择了3种产品,则这三种产品应显示在订单审核页面的“桌子”标题下。如果用户从“大厅”下购买了5件物品列表中,则这5种产品应显示在订单审核页面的标题“大厅”下)

目前,我可以获得正确的标题文本,但文本会在每个项目中重复(即标题“桌面”显示在“桌面”列表下订购的3个项目的上方)。我希望每个项目/项目分组只显示一次,但我不确定如何执行

我使用中继器向用户显示订单信息,其他一切都按照我希望的方式工作。我只是对这一点感到困惑。任何帮助都会很好。提前谢谢

以下是设计器代码:

<asp:Repeater ID="orderRepeater" runat="server" >
    <itemtemplate>
        <h3 class="locationName"><%# Eval("LocationName") %></h3>
        <div class="headerRow">
            <div class="header">
                <div class="thumb"><p></p></div>
                <div class="headerField name"><p class="hField">Product</p></div>
                <div class="headerField sku"><p class="hField">GOJO SKU</p></div>
                <div class="headerField size"><p class="hField">Size</p></div>
                <div class="headerField case"><p class="hField">Case Pack</p></div>
                <div class="headerField qty"><p class="hField">Quantity</p></div>
            </div>
        </div>
        <div class="table">
            <div class="row">
                <div class="thumb"><%# Eval("Thumbnail") %></div>
                <div class="field name"><p class="pField"> <%#Eval("ProductName") %> </p></div>
                <div class="field sku"><p class="pField"> <%#Eval("Sku") %></p></div>
                <div class="field size"><p class="pField"> <%#Eval("Size") %></p></div>
                <div class="field case"><p class="pField"><%#Eval("CasePack") %></p></div>
                <div class="field qty"><p class="pField"><%#Eval("Qty") %></p></div>
            </div>
        </div>
    </itemtemplate>
</asp:Repeater>

产品

GOJO SKU

尺寸

箱包

数量

下面是隐藏的代码:

private void Page_Load(object sender, EventArgs e) 
{
    Label lbl = (Label)FindControl("orderLbl");
    Item CurrentItem = Sitecore.Context.Item;
    Item HomeItem = ScHelper.FindAncestor(CurrentItem, "gojoMarket");

    if (Session["orderComplete"] != null && Session["orderComplete"] != "")
    {

        if (HomeItem != null)
        {
            Item ProductGroup = HomeItem.Axes.SelectSingleItem(@"child::*[@@templatename='gojoMarketOfficeBuildigProductMap']/*[@@templatename='gojoOrderReview']");

            Database db = Sitecore.Context.Database;
            DataSet dset = new DataSet();


            if (ProductGroup != null)
            {
                string InFromSession = Session["orderComplete"].ToString();

                try
                {
                    DataTable summary = dset.Tables.Add("summary");

                    summary.Columns.Add("LocationName", Type.GetType("System.String"));
                    summary.Columns.Add("Thumbnail", Type.GetType("System.String"));
                    summary.Columns.Add("ProductName", Type.GetType("System.String"));
                    summary.Columns.Add("Sku", Type.GetType("System.String"));
                    summary.Columns.Add("Size", Type.GetType("System.String"));
                    summary.Columns.Add("CasePack", Type.GetType("System.String"));
                    summary.Columns.Add("Qty", Type.GetType("System.String"));
                    summary.Columns.Add("Location", Type.GetType("System.String"));

                    Label qL = (Label)FindControl("qty");
                    string[] orders = InFromSession.Split(';');
                    foreach (string order in orders)
                    {
                        int total = orders.GetUpperBound(0);
                        if (order != "")
                        { 
                            string[] infos = order.Split(',');

                            string ids = infos.GetValue(0).ToString();

                            string qtys = infos.GetValue(1).ToString();

                            if (ids != "")
                            {
                                Item CatalogueItem = db.Items[ids];
                                DataRow drow = summary.NewRow();

                                Item LocationItem =  ScHelper.FindAncestor(CatalogueItem, "gojoProductLocation");
                                if (LocationItem != null)
                                {
                                    //this returns the header text values that I need
                                    string LocationName = LocationItem.Fields["Header"].ToString();

                                    drow["LocationName"] = LocationName;
                                }
                                    Item orderItem = db.Items[CatalogueItem.Fields["Reference SKU"].Value];
                                    if (orderItem != null)
                                    {
                                        Item marketItem = db.Items[orderItem.Fields["Master Product"].Value];
                                        if (marketItem != null) 
                                        {
                                            Item CPNItem = db.Items[marketItem.Fields["Complete Product Name"].Value];

                                            drow["Thumbnail"] = "";

                                            Sitecore.Data.Fields.XmlField fileField = marketItem.Fields["Thumbnail"];
                                            drow["Thumbnail"] = "<image src=\"" + ScHelper.GetCorrectFilePath(fileField) + "\" border=\"0\" alt=\"\">";

                                            if (CPNItem != null)
                                            {
                                                var name = CPNItem["Complete Name"];
                                                drow["ProductName"] = name;
                                            }

                                            drow["Sku"] = marketItem.Fields["SKU"].Value;
                                            drow["CasePack"] = marketItem.Fields["Case Pack"].Value;
                                            if (marketItem.Fields["Size"] != null)
                                            {
                                                drow["Size"] = marketItem.Fields["Size"].Value;
                                            }
                                            else
                                            {
                                                drow["Size"] = "N/A";

                                            }

                                            drow["Qty"] = qtys.ToString();
                                            summary.Rows.Add(drow);
                                        }
                                    }



                             }

                        }
                    }
                    orderRepeater.DataSource = dset;
                    orderRepeater.DataMember = "summary";
                    orderRepeater.DataBind();
                }
                catch (Exception x)
                {
                    Response.Write(x.Message.ToString());

                }
            }

        }
    }
    else
    {
        HyperLink none = (HyperLink)FindControl("link");
        Label msg = (Label)FindControl("msgLbl");
        none.Visible = true;

        msg.Text = "You have not selected any items for purchase. To purchase items, please visit our complete product listing: ";
    }
}
private void页面加载(对象发送方,事件参数e)
{
Label lbl=(Label)FindControl(“orderLbl”);
Item CurrentItem=Sitecore.Context.Item;
Item HomeItem=ScHelper.FindAncestor(当前项目,“gojoMarket”);
if(会话[“orderComplete”]!=null&&Session[“orderComplete”]!=“”)
{
如果(HomeItem!=null)
{
Item ProductGroup=HomeItem.Axes.SelectSingleItem(@“子项::*[@@templatename='gojoMarketOfficeBuildigProductMap']/*[@@templatename='gojoOrderReview']);
数据库db=Sitecore.Context.Database;
数据集dset=新数据集();
if(ProductGroup!=null)
{
string-nfromsession=Session[“orderComplete”].ToString();
尝试
{
DataTable summary=dset.Tables.Add(“summary”);
summary.Columns.Add(“LocationName”,Type.GetType(“System.String”);
summary.Columns.Add(“缩略图”,Type.GetType(“System.String”);
summary.Columns.Add(“ProductName”,Type.GetType(“System.String”);
summary.Columns.Add(“Sku”,Type.GetType(“System.String”);
summary.Columns.Add(“Size”,Type.GetType(“System.String”);
summary.Columns.Add(“CasePack”,Type.GetType(“System.String”);
summary.Columns.Add(“数量”,Type.GetType(“系统字符串”);
summary.Columns.Add(“Location”,Type.GetType(“System.String”);
标签qL=(标签)FindControl(“数量”);
string[]orders=refromsession.Split(“;”);
foreach(顺序中的字符串顺序)
{
int total=orders.GetUpperBound(0);
如果(订单!=“”)
{ 
字符串[]infos=order.Split(',');
字符串ID=infos.GetValue(0.ToString();
字符串qtys=infos.GetValue(1.ToString();
如果(ID!=“”)
{
项目目录项=数据库项目[ID];
DataRow drow=summary.NewRow();
项目位置项目=ScHelper.FindAncestor(目录项,“gojoProductLocation”);
if(LocationItem!=null)
{
//这将返回我需要的标题文本值
string LocationName=LocationItem.Fields[“Header”].ToString();
drow[“LocationName”]=LocationName;
}
Item orderItem=db.Items[目录项字段[“参考SKU”].Value];
if(orderItem!=null)
{
Item marketItem=db.Items[orderItem.Fields[“主产品”].Value];
如果(市场项目!=null)
{
Item CPNItem=db.Items[marketItem.Fields[“完整产品名称”].Value];
drow[“缩略图”]=“”;
Sitecore.Data.Fields.XmlField fileField=marketItem.Fields[“缩略图”];
drow[“缩略图”]=“”;
如果(CPNItem!=null)
{
var name=CPNItem[“全名”];
drow[“ProductName”]=名称;
}
drow[“Sku”]=市场项目字段[“Sku”].值;
drow[“CasePack”]=市场项目字段[“CasePack”].值;
if(市场项目字段[“大小”!=null)
{
drow[“大小”]=市场项目字段[“大小”].值;
<asp:Repeater ID="orderRepeater" runat="server" >
    <HeaderTemplate><h3><asp:Literal runat="server" id="header" /></h3></HeaderTemplate>
    <ItemTemplate>[your existing code here]</ItemTemplate>
</asp:Repeater>
protected void orderRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Header)
    {
        ((Literal)e.Item.FindControl("header")).Text = "The header" // Whatever you would like this to be;
    }
}