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
谢谢,
答案 0 :(得分:1)
使复选框的标识符唯一。否则无法正确加载viewstate。
使用类似的东西:
chkEmailExclusion.ID = "chkEmailExclusion_" + reviewId ;
另外,将ID设置在条件之外。在chkEmailExclusion.Enabled = true;
之后。