扩展CheckBoxList实现选中绑定

简介:

CheckBoxList中有DataTextField和DataValueField可以用于设置绑定时的绑定对象属性,但是可惜针对CheckBoxList却没有办法直接绑定一个Item是否被选中。于是我打算扩展一下CheckBoxList,使得该控件可以绑定Checked状态。具体做法是这样的:

(1)新建一个Web服务器控件项目,添加Web服务器控件类CheckBoxListWithCheckBind。

(2)将该类继承自CheckBoxList。

public class CheckBoxListWithCheckBind : CheckBoxList

(3)增加属性DataCheckedField,用于指定绑定Checked状态的属性名字符串。

[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string DataCheckedField
{
get
{
String s = (String)ViewState["DataCheckedField"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["DataCheckedField"] = value;
}
}

(4)增加BindChecked方法,用于绑定CheckBoxList中的每个Item的Selected属性,这里使用Items.FindByValue方法来找Item的,这里认为每个Item的Value是不同的。如果是Item的Text是不同的,那么也可以使用Items.FindByText方法。

 private void BindChecked()
{
var dataSource = this.DataSource as IEnumerable;
if(dataSource==null)
{
return;
}
foreach (object obj2 in dataSource)
{
var value = DataBinder.GetPropertyValue(obj2, DataValueField, null);
ListItem item = this.Items.FindByValue(value);
if (DataCheckedField.Length > 0)
{
item.Selected = Convert.ToBoolean(DataBinder.GetPropertyValue(obj2, DataCheckedField, null));
}
}
}

(5)重写OnDataBinding方法,在基类的OnDataBinding方法后调用前面写的BindChecked方法。

protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding(e);
BindChecked();
}

具体的代码如下:

完整代码

接下来的使用方法就很简单了,直接在aspx页面上写该控件的DataCheckedField属性既可:

<cc1:CheckBoxListWithCheckBind ID="cbxl" runat="server" DataTextField="CompanyName" DataValueField="CompanyCode" DataCheckedField="IsChecked">

</cc1:CheckBoxListWithCheckBind>

本文转自深蓝居博客园博客,原文链接:http://www.cnblogs.com/studyzy/archive/2009/08/04/1538039.html,如需转载请自行联系原作者

相关文章
|
5月前
|
开发框架 前端开发 JavaScript
在DevExpress的GridView的列中,动态创建列的时候,绑定不同的编辑处理控件
在DevExpress的GridView的列中,动态创建列的时候,绑定不同的编辑处理控件
|
6月前
Element UI 多选表格--判断勾选数据行的 Checkbox 时为选中还是取消选中
Element UI 多选表格--判断勾选数据行的 Checkbox 时为选中还是取消选中
89 1
|
8月前
el-cascader组件实现点击、递归勾选联动子集children所有选项被选中。
el-cascader组件实现点击、递归勾选联动子集children所有选项被选中。
easyUI datagarid 编辑状态下的combobox动态赋值
easyUI datagarid 编辑状态下的combobox动态赋值
|
C# 数据库
C# Button/SimpleButton (按钮) 动态赋值
C# Button/SimpleButton (按钮) 动态赋值
221 0
C# Button/SimpleButton (按钮) 动态赋值
uiu
|
安全
【Svelte】-(6)绑定|input 输入框 / group 复选框绑定 / textarea 输入框 / select 绑定 / contenteditable 属性绑定
【Svelte】-(6)绑定|input 输入框 / group 复选框绑定 / textarea 输入框 / select 绑定 / contenteditable 属性绑定
uiu
315 0
【Svelte】-(6)绑定|input 输入框 / group 复选框绑定 / textarea 输入框 / select 绑定 / contenteditable 属性绑定
|
JavaScript
【mpvue】radio-group 标签组设置默认选择checked: 'true',选择了单选按钮的非默认选项,再点击其他的选择,单选按钮又会变成默认的选项
1、问题举例描述: radio-group 标签组设置默认选择checked: ‘true’,选择了单选按钮的非默认选项(场外),再点击其他的选择(手续费率),单选按钮又会变成默认的选项(场内) 默认状态如下:
560 0
【mpvue】radio-group 标签组设置默认选择checked: 'true',选择了单选按钮的非默认选项,再点击其他的选择,单选按钮又会变成默认的选项
|
JavaScript
jquery操作radio单选按钮,实现取值,动态选中,动态删除的各种方法
  本文主要讲的是在jquery里操作表单radio单选按钮的各种方法,如获取选中的radio的值,动态选中指定的radio项等。 1.获取选中的radio单选按钮的值: var v=$(":radio[name='aijquery']:checked").
1628 0