0

私は Sitecore を使用しており、タブを含む Web ページを持っています。このタブは、1 つまたは複数の子を持つことができます。現在、選択されているタブに応じて動的に変化するプロモーション コントロールがあります。

したがって、Tab1 を選択すると、そのページにプロモーションが表示されます。Tab2 のプロモーションは異なるか同じである可能性があります。これら 2 つは別のコントロールに配置されます。

私がこれまでに得たのはこのコードだけです:

        Sitecore.Data.Database db = Sitecore.Context.Database;
        Item home = db.GetItem(Sitecore.Context.Site.StartPath);
        var getItems = (from Item item in currItem.Children.InnerChildren 
                        select item).ToList();

このクエリの結果は 3 項目です。タブが3つあるからです。これらのタブは、次のようにリピーターにあります。

<asp:Repeater ID="rptPromo" runat="server" OnItemDataBound="rptPromo_ItemBound">
<ItemTemplate>
    <table width="100%">
          <tbody>
                 <tr>

                     <td>
                         <h2><sup><sc:Text ID="txtPromo" Field="PromoText" runat="server" /></sup></h2>
                    </td>

                 </tr>

           </tbody>
    </table>    
</ItemTemplate>

選択されているタブの情報を取得する方法。別の関数で PROMO コントロールを変更しています。

 protected void rptPromo_ItemBound (Object sender, RepeaterItemEventArgs e)
    {

        Item i = e.Item.DataItem as Item;
        Text txtPromo = e.Item.FindControl("txtPromo") as Text;
        //txtPromo.Attributes.Add("txtPromo", txtPromo);
        //HTMLControl hyperLinkLookUp = e.Item.FindControl("") as 
        string s;
    }

私は何をすべきか?

4

1 に答える 1

0

Text コントロールは、Item コンテキストを認識する必要があります。いずれかが設定されていない場合は、現在のコンテキスト アイテムが想定され、その結果、3 つの重複する PromoText がリピーターに表示されます (または、現在のコンテキスト アイテムに PromoText フィールドがない場合はまったく表示されません)。

FieldText コントロールで既にプロパティが定義されているためItem、次のようにそのプロパティを割り当てるだけで済みます。

protected void rptPromo_ItemBound (Object sender, RepeaterItemEventArgs e)
{
    Item i = e.Item.DataItem as Item;
    Sitecore.Web.UI.WebControls.Text txtPromo = e.Item.FindControl("txtPromo") as Sitecore.Web.UI.WebControls.Text;
    txtPromo.Item = i;

    //txtPromo.Attributes.Add("txtPromo", txtPromo);
    //HTMLControl hyperLinkLookUp = e.Item.FindControl("") as 
    string s;
}
于 2012-07-19T21:37:09.113 に答える