Coolite在后台动态加载CheckboxGroup,页面显示都正常,但是在后台去获取选中的checkbox时,使用下方法:
/// <summary> /// 获取所选权限 /// </summary> /// <returns></returns> private string GetPermissionValue() { string str = string .Empty; cbgPermission.CheckedItems.ForEach( delegate (Checkbox checkbox) { if ( string .IsNullOrEmpty(str)) str = checkbox.ID; else str += " , " + checkbox.ID; }); return str;}
跟踪后发现获取的cbgPermission.CheckedItems一直为0.
解决方法:
可是是Coolite页面加载的问题,将动态加载checkbox的方法
代码
/// <summary> /// 绑定系统所有权限 /// </summary> private void PartBinder() { IList < SystemPermission > parts = SystemPermissionBLL.GetALL( " ParentCode='0' " , " Code " ); if (parts != null && parts.Count > 0 ) { foreach (SystemPermission part in parts) { CheckboxColumn col = new CheckboxColumn(); col.ID = " CheckboxColumn " + part.SPId; col.ColumnWidth = Convert.ToDouble( 0.33 ); Checkbox checkbox = new Checkbox(); checkbox.ID = part.Code; checkbox.IDMode = IDMode.Explicit; checkbox.BoxLabel = part.Name; checkbox.Checked = true ; col.Items.Add(checkbox); IList < SystemPermission > items = SystemPermissionBLL.GetALL( " ParentCode=' " + part.Code + " ' " , " Code " ); if (items.Count > 0 && items != null ) { foreach (SystemPermission item in items) { Checkbox checkboxChild = new Checkbox(); checkboxChild.ID = item.Code; checkboxChild.BoxLabel = item.Name; col.Items.Add(checkboxChild); } } cbgPermission.Items.Add(col); } } }
放入到重写的页面createChildControl中去,而不是放在pageload中。
protected override void CreateChildControls() { PartBinder(); base .CreateChildControls(); }
完成