Kentico Unigrid OnExternalDataBound的复选框控件在排序后不会刷新

时间:2016-02-23 00:44:09

标签: c# .net kentico unigrid

Kentico unigrid控件中的自定义复选框存在问题,如下所示:

当我在OnExternalDataBound函数中使用复选框控件时,一切正常,除非我点击任何排序链接时,复选框的值保持不变!?

示例:当我进行选择(例如前三项)然后对网格进行排序时,前三个项目仍然被选中,即使这些项目现在不再是我在排序之前选择的三个项目。

 protected object unigridXXX_OnExternalDataBound(object sender, string sourceName, object parameter)
 {
    var drv = (DataRowView)parameter;
    var obj = (DataControlFieldCell)sender;
    int reviewId = ValidationHelper.GetInteger(drv.Row["ItemID"], 0);
    bool isExcludedFromEmail = ValidationHelper.GetBoolean(drv.Row["EmailExclusion"], false);

    if (sourceName.ToLower() == "excludedemail")
    {
        CheckBox chkEmailExclusion = new CheckBox();
        chkEmailExclusion.Enabled = true;

        if (isAdmin || (isTrainingAdmin))
        {
            chkEmailExclusion.ID = "chkEmailExclusion";
            chkEmailExclusion.TextAlign = TextAlign.Left;
            chkEmailExclusion.Enabled = false;
            chkEmailExclusion.CssClass = "excluded-email";
            chkEmailExclusion.Checked = isExcludedFromEmail;
        }

        return chkEmailExclusion;
    }
}

如果这是一个已知错误,请告诉我,并且有解决方法。

请注意:此问题仅适用于复选框和可能的文本框控件,而不是任何其他控件。

我使用的是Kentico v8.2.16

谢谢,

1 个答案:

答案 0 :(得分:1)

使复选框的标识符唯一。否则无法正确加载viewstate。

使用类似的东西:

chkEmailExclusion.ID = "chkEmailExclusion_" + reviewId ;

另外,将ID设置在条件之外。在chkEmailExclusion.Enabled = true;之后。