Добавьте шаблон группировки в ASP: Repeater, который отображается после любого шаблона заголовка - PullRequest
0 голосов
/ 06 апреля 2010

Я переклассифицировал ретранслятор asp, аналогичный Репитер группирования Все отлично работает, если у меня также нет <HeaderTemplate> </HeaderTemplate> Шаблон группировки визуализируется перед шаблоном заголовка.Я действительно хотел бы либо иметь возможность выбрать порядок отображения шаблонов, либо просто отображать <GroupTemplate> после заголовка.

1 Ответ

0 голосов
/ 06 апреля 2010

Вы пробовали более простой?мы не сможем оценить вашу ошибку, если не увидим код, который вы запускаете.Пожалуйста, разместите примеры.

Более простой из комментариев:

using System;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;


    /// <summary> 
    /// This wraps the Web Repeater class and adds grouping capabilities.
    /// </summary> 
    public class GroupingRepeater : Repeater
    {

        private string _lastGroup;
        private string _groupColumn;
        private ITemplate _groupTemplate;

        /// <summary> 
        /// Gets or sets the column to group by.
        /// </summary> 
        [Browsable(true), Category("Behaviour")]
        public string GroupColumn
        {
            get { return _groupColumn; }
            set { _groupColumn = value; }
        }

        /// <summary> 
        /// Gets or sets the template used for Grouping.
        /// </summary> 
        [PersistenceMode(PersistenceMode.InnerProperty)]
        [Browsable(false)]
        [TemplateContainer(typeof(RepeaterItem))]
        [DefaultValue("")]
        public virtual ITemplate GroupTemplate
        {
            get { return _groupTemplate; }
            set { _groupTemplate = value; }
        }

        /// <summary> 
        /// Default constructor.
        /// </summary> 
        public GroupingRepeater()
        {
            _lastGroup = null;
        }

        /// <summary> 
        /// Called when an item is created.
        /// </summary> 
        /// <param name="e"></param> 
        protected override void OnItemCreated(RepeaterItemEventArgs e)
        {
            base.OnItemCreated(e);

            if (!string.IsNullOrEmpty(GroupColumn))
            {
                string currentGroup = e.Item.DataItem.GetType().GetProperty(GroupColumn).GetValue(e.Item.DataItem, null).ToString();
                if (_lastGroup == null || _lastGroup != currentGroup)
                {
                    RepeaterItem item = new RepeaterItem(0, ListItemType.Item);

                    GroupTemplate.InstantiateIn(item);
                    item.DataItem = e.Item.DataItem;
                    this.Controls.Add(item);
                    item.DataBind();

                    _lastGroup = currentGroup;
                }
            }
        }

    }
...