2012-05-09 35 views
1

我已经创建了一个自定义事件文档,它扩展了普通事件文档的字段。我添加了一个字段,可以将管道分隔列表中的许多类别ID保留为0。类别存储在自定义表格中。如何获取过滤器以使用事件日历webpart?

这里是我的过滤器代码:

public partial class CMSGlobalFiles_EventCategoryFilter : CMSAbstractDataFilterControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected override void OnInit(EventArgs e) 
    { 
     SetupControl(); 

     base.OnInit(e); 
    } 

    protected override void OnPreRender(EventArgs e) 
    { 
     if (RequestHelper.IsPostBack()) 
     { 
      setFilter(); 
     } 

     base.OnPreRender(e); 
    } 

    private void SetupControl() 
    { 
     if (this.StopProcessing) 
     { 
      this.Visible = false; 
     } 

     else if (!RequestHelper.IsPostBack()) 
     { 
      InitializeCategory(); 
     } 

    } 

    private void InitializeCategory() 
    { 
     CustomTableItemProvider customTableProvider = ne CustomTableItemProvider(CMSContext.CurrentUser); 

     string where = ""; 

     string tableName = "customtable.EventCategory"; 

     DataClassInfo customTable = DataClassInfoProvider.GetDataClass(tableName); 

     if (customTable != null) 
     { 

      DataSet dataSet = customTableProvider.GetItems(tableName, where, null); 

      if (!DataHelper.DataSourceIsEmpty(dataSet)) 
      { 
       this.drpCategory.DataSource = dataSet; 
       this.drpCategory.DataTextField = "CategoryName"; 
       this.drpCategory.DataValueField = "ItemGUID"; 

       this.drpCategory.DataBind(); 

       this.drpCategory.Items.Insert(0, new ListItem("(all)", "##ALL##")); 
      } 
     } 

    } 

    private void setFilter() 
    { 
     string where = null; 

     if (this.drpCategory.SelectedValue != null) 
     { 
      Guid itemGUID = ValidationHelper.GetGuid(this.drpCategory.SelectedValue, Guid.Empty); 

      if (itemGUID != Guid.Empty) 
      { 
       where = "EventCategory LIKE \'%" + itemGUID.ToString() + "%\'"; 
      } 

     } 

     if (where != null) 
     { 
      this.WhereCondition = where; 
     } 

     this.RaiseOnFilterChanged(); 
    } 

} 

该过滤器使用基本的中继器和文档数据源的伟大工程。当我使用事件日历时,它不会。我正在使用Kentico 6.0.30版本

回答

1

问题出在EventCalendar的不同生命周期中,基于CMSCalendar控件,该控件基于标准.Net日历。

首先,我们的开发人员发现了一种解决此问题的方法,并允许您的方案默认运行。此修复程序将包含在6.0.33修补程序中(计划于25日星期五发布)。 对此造成的不便,我深表歉意。

除了这个即将到来的修复之外,还可以通过修改(克隆)Web部件来将EventCalendar筛选其结果,将筛选器控件直接集成到该Web部件中并在OnPreRender中设置日历的Where条件DataBind as

protected override void OnPreRender(EventArgs e) 
{ 
    calItems.WhereCondition = "some filtering condition"; 
    ... 

如果您可以修补您的CMS实例,那肯定会更省力。

问候,

兹德涅克/ Kentico支持

相关问题