获取Sitecore中的“Tab”索引

时间:2012-07-19 21:05:55

标签: c# asp.net sitecore

我正在使用Sitecore,我有一个包含标签的网页。此选项卡可以包含1个或多个子项。现在有一个促销控件,根据选择的选项卡动态更改。

因此,如果我选择了Tab1,那么该页面会显示一些促销。 Tab2可能有不同/相同的促销。这两个放在不同的控件中。

到目前为止,我得到的只是这段代码:

        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;
    }

我该怎么办?

1 个答案:

答案 0 :(得分:0)

Text控件需要知道Item上下文。如果没有设置,则它假设您所在的当前上下文项将导致在转发器中出现3个重复的PromoTexts(或者如果当前上下文项上没有出现PromoText字段则根本没有)。

您已经在Text控件上定义了Field属性,因此您需要做的就是按如下方式分配其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;
}