더 간단한 것을 시도 했습니까? 우리는 실행중인 코드를 볼 수 없다면 버그를 평가할 수 없습니다. 예를 게시하십시오.
더 간단 코멘트에서 하나 :
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;
}
}
}
}
네, 그 코드를 기반으로합니다. 다시 빌드 한 후에 템플릿이 올바른 순서로 나왔지만이 코드는 포스트 백 이벤트에 문제가 있습니다. 첫 번째 그룹 이외의 버튼에 단추 이벤트를 가져 오는 데는 문제가 있습니다. 중첩 된 중계기 경로를 지금 완료했습니다. – HadleyHope