波斯马BOSSMA Information Technology

Web自定义控件之CheckBoxList

发布时间:2008年7月21日 / 分类:ASP.NET / 23,806 次浏览 / 评论

标准的CheckBoxList控件,通过SelectedValue不能或许全部的选中值,也不能设置选中值。很多时候处理起来很麻烦,每次都要自己写代码获取选中项的值,今天写了一个控件,继承了CheckBoxList,添加了几个属性:SelectedValues、SelectedTexts、SelectedItems,实现获取或设置全部选中项、选中值、选中文本。

   
 /// <summary>
    /// MyCheckBoxList,获取多个选择项
    /// </summary>
    [ToolboxData("<{0}:MyCheckBoxList runat=server></{0}:MyCheckBoxList>")]
    public class MyCheckBoxList : CheckBoxList
    {
        /// <summary>
        /// 获取或设置选中项的值,以半角逗号分隔
        /// </summary>
        [Browsable(true)]
        [Bindable(true)]
        [Description("获取或设置选中项的值,以半角逗号分隔")]
        public string SelectedValues
        {
            get
            {
                string ValueStr = string.Empty;
                for (int k = 0; k <= this.Items.Count - 1; k++)
                {
                    if (this.Items[k].Selected)
                    {
                        ValueStr += this.Items[k].Value + ",";
                    }
                }
                if (ValueStr != string.Empty)
                {
                    ValueStr = ValueStr.Substring(0, ValueStr.Length - 1);
                }

                return ValueStr;
            }

            set
            {
                if (value != string.Empty)
                {
                    string[] values = value.Split(',');

                    for (int k = 0; k <= this.Items.Count - 1; k++)
                    {
                        for (int j = 0; j <= values.Length - 1; j++)
                        {
                            if (values[j] == this.Items[k].Value)
                            {
                                this.Items[k].Selected = true;
                            }
                        }
                    }
                }
            }
        }

        /// <summary>
        /// 获取或设置选中项的文本,以半角逗号分隔
        /// </summary>
        [Browsable(true)]
        [Bindable(true)]
        [Description("获取或设置选中项的文本,以半角逗号分隔")]
        public string SelectedTexts
        {
            get
            {
                string TextStr = string.Empty;
                for (int k = 0; k <= this.Items.Count - 1; k++)
                {
                    if (this.Items[k].Selected)
                    {
                        TextStr += this.Items[k].Text + ",";
                    }
                }
                if (TextStr != string.Empty)
                {
                    TextStr = TextStr.Substring(0, TextStr.Length - 1);
                }

                return TextStr;
            }

            set
            {
                if (value != string.Empty)
                {
                    string[] values = value.Split(',');

                    for (int k = 0; k <= this.Items.Count - 1; k++)
                    {
                        for (int j = 0; j <= values.Length - 1; j++)
                        {
                            if (values[j] == this.Items[k].Text)
                            {
                                this.Items[k].Selected = true;
                            }
                        }
                    }
                }
            }
        }

        /// <summary>
        /// 获取或设置选中项,返回ListItemCollection
        /// </summary>
        [Browsable(true)]
        [Bindable(true)]
        [Description("获取或设置选中项,返回ListItemCollection")]
        public ListItemCollection SelectedItems
        {
            get
            {
                ListItemCollection Items = new ListItemCollection();
                for (int k = 0; k <= this.Items.Count - 1; k++)
                {
                    if (this.Items[k].Selected)
                    {
                        Items.Add(this.Items[k]);
                    }
                }

                return Items;
            }

            set
            {
                ListItemCollection Items = (ListItemCollection)value;

                for (int k = 0; k <= this.Items.Count - 1; k++)
                {
                    for (int i = 0; i <= Items.Count - 1;i++ )
                    {
                        if (this.Items[k].Equals(Items[i]))
                        {
                            this.Items[k].Selected = true;
                        }
                    }
                }
            }
        }
    }
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《Web自定义控件之CheckBoxList

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论