一个带checkbox的webcontrol

web

谢谢大家,无以回报,贴点儿东西吧。

刚才看到下边不少人问给datatable或table添加一个选择框,实际上如果你可以自己做一个webcontrol来实现这个功能,下边是我做的一个带checkbox的webcontrol,由于注释比较全,所以我就不加说明了。

using System;
using System.Collections ;
using System.Web.UI.WebControls ;
using System.Web.UI ;

namespace Bigeagle.Web.WebControls
{
    /// <summary>
    /// <br>自定义控件,带选择框的Table</br>
    /// <br>Author:  Bigeagle@163.net</br>
    /// <br>Date:    2001/10/10</br>
    /// <br>History: 2001/10/10 finished</br>
    /// </summary>
    /// <remarks>
    /// 继承System.Web.UI.WebControls.Table,增加CheckedValue属性,
    /// 用于多项选择的场合,返回被选择的CheckTableRow的值的数组
    /// </remarks>
    public class CheckTable : System.Web.UI.WebControls.Table
    {

        /// <summary>
        /// 是否使用checkbox
        /// </summary>
        /// <remarks>如果为false则不显示checkbox</remarks>
        private bool m_bUseCheck ;

        /// <summary>
        /// ֵ选择数组
        /// </summary>
        /// <remarks>返回选定的CheckTableRow的值</remarks>
        private ArrayList m_arrCheckedValue ;

        /// <summary>
        /// 取得选择数组的属性
        /// </summary>
        /// <remarks>只读属性</remarks>
        public ArrayList CheckedValue
        {
            get
            {
                return this.m_arrCheckedValue ;
            }
        }

        /// <summary>
        /// 存取是否使用checkbox的属性
        /// </summary>
        public bool UseCheck
        {
            get
            {
                return this.m_bUseCheck ;
            }
            set
            {
                this.m_bUseCheck = value ;
            }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        public CheckTable()
        {
            this.m_arrCheckedValue = new ArrayList() ;
            this.m_bUseCheck = true ;
        }

        /// <summary>
        /// 重载父类方法
        /// </summary>
        /// <param name="e"></param>
        protected override void OnLoad(System.EventArgs e)
        {
            if(this.m_bUseCheck)
            {
                try
                {
                    for(int i = 0 ; i < this.Rows.Count ; i++)
                    {
                        CheckTableRow ctr = (CheckTableRow)this.Rows[i] ;
                        CheckBox cb = (CheckBox)ctr.FindControl(ctr.Value) ;
                        if(cb.Checked)
                        {
                            this.m_arrCheckedValue.Add(ctr.Value) ;
                        }
                    }

                }
                catch(Exception)    //一般出现异常是因为有重复的控件id
                {
                    throw(new Exception("出现重复的控件id")) ;
                }
            }
        }//end method
        

    }//end class
}//end method

using System;
using System.Web.UI.WebControls ;
using System.Web.UI ;

namespace Bigeagle.Web.WebControls
{
    /// <summary>
    /// <br>自定义控件,带选择框的TableRow</br>
    /// <br>Author:  Bigeagle@163.net</br>
    /// <br>Date:    2001/10/10</br>
    /// <br>History: 2001/10/10 finished</br>
    /// </summary>
    /// <remarks>
    /// 继承System.Web.UI.WebControls.TableRow , 作为自定义控件CheckTable的TableRow,
    /// 与TableRow相比,增加一个值属性和一个CheckBox
    /// </remarks>
    public class CheckTableRow : System.Web.UI.WebControls.TableRow
    {
        /// <summary>
        /// 值
        /// </summary>
        private string m_strValue ;

        /// <summary>
        /// 是否使用checkbox
        /// </summary>
        /// <remarks>如果为false则不显示checkbox</remarks>
        private bool m_bUseCheck ;

        /// <summary>
        /// 存取value的属性
        /// </summary>
        public string Value
        {
            get
            {
                return this.m_strValue ;
            }
            set
            {
                this.m_strValue = value ;
            }
        }

        /// <summary>
        /// 存取是否使用checkbox的属性
        /// </summary>
        public bool UseCheck
        {
            get
            {
                return this.m_bUseCheck ;
            }
            set
            {
                this.m_bUseCheck = value ;
            }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        public CheckTableRow()
        {
            this.m_strValue = "" ;
            this.m_bUseCheck = true ;

            
        }

        /// <summary>
        /// 重载父类方法
        /// </summary>
        /// <returns>控件结合</returns>
        /// <remarks>增加一个带有CheckBox的td</remarks>
        protected override System.Web.UI.ControlCollection CreateControlCollection()
        {
            ControlCollection cc = base.CreateControlCollection() ;
            if(this.m_bUseCheck)
            {
                TableCell td = new TableCell() ;
                td.BackColor = this.BackColor ;
                td.VerticalAlign = VerticalAlign.Top ;
                CheckBox cb = new CheckBox() ;
                cb.ID = this.m_strValue ;
                td.Controls.Add(cb) ;
                cc.Add(td) ;
            }
            return cc ;
        }//end method

    }//end class
}//end namespace
 

时间: 2025-01-02 13:50:20

一个带checkbox的webcontrol的相关文章

带CheckBox的Extjs ComboboxTree

实现效果如下: Ext.onReady(function() { //自定义扩展一个带Tree的comboBox Ext.ux.LovTreeCombo = Ext.extend(Ext.form.ComboBox, { initList: function() { this.list = new Ext.tree.TreePanel({ floating: true, autoHeight: false, autoExpand: true, height: , rootVisible: fal

easyui tree带checkbox实现单选的简单实例_javascript技巧

实例如下: <ul id="regionTree"></ul> $('#regionTree').tree({ cascadeCheck: false, //onlyLeafCheck: true, checkbox: true, data: [{ "id": 1, "text": "My Documents", "children": [{ "id": 11,

Silverlight Telerik控件学习:带CheckBox复选框的树形TreeView控件

在web开发中,带checkbox的tree是一个很有用的东东,比如权限选择.分类管理,如果不用sl,单纯用js+css实现是很复杂的,有了SL之后,就变得很轻松了 解决方案一: 利用Silvelright ToolKit(微软的开源项目),项目地址http://silverlight.codeplex.com/ 在线演示地址:http://silverlight.net/content/samples/sl4/toolkitcontrolsamples/run/default.html 解决方

动态生成的带checkbox的treepanel父子联动

问题描述 动态生成的带checkbox的treepanel父子联动 先说下状况与需求:我的treepanel是通过点击父节点然后从数据库查询创建子节点的,所以需要在点击父节点时判断子节点个数并实现全选全不选,要求父节点选中则子节点全选,子节点有一个取消则父节点的checkbox变成未选择状态,基本就是这样,不够告诉我,我来补充.. 解决方案 算了,改需求了,不用这个了 解决方案二: 就看你们的了,.! 解决方案三: 就看你们的了,.! 解决方案四: 这有现成的树插件,去学习学习怎么用吧!http

myeclipse10.0安装会自动生成一个带空格的文件夹,汉化和使用会报错

问题描述 myeclipse10.0安装会自动生成一个带空格的文件夹,汉化和使用会报错 汉化要求安装路径不能带有空格,但是安装时会自动生成一个myeclipse 10的文件夹,无法汉化,该怎么办?图片说明 尝试过把空格去掉,但这样就无法启动程序会报错 解决方案 汉化版经常会出问题的,建议用英文版 解决方案二: 用英文的貌似也没啥区别吧,不一定要汉化的

jsp-请问 oracler如何调用一个带参数的JSP网页,

问题描述 请问 oracler如何调用一个带参数的JSP网页, 请问 oracler如何调用一个带参数的JSP网页, 请问 oracler如何调用一个带参数的JSP网页, 请问 oracler如何调用一个带参数的JSP网页, 解决方案 有没有人知道啊,帮忙看看,我们想用在过程里执行一个网页,并且带参数 解决方案二: 通过如下代码调用一支网页程序,执行网页的时候在本机的TOMCAT服务器是有这一 串'con1='||P_CARRYS_NO||'& carrys_cat='||P_CARRYS_CA

java编程,在屏幕上显示一个带标题的窗口,并添加一个按钮

问题描述 java编程,在屏幕上显示一个带标题的窗口,并添加一个按钮 编写程序,在屏幕上显示一个带标题的窗口,并添加一个按钮,当用户单击按钮时,弹出对话框,显示用户单击了按钮. 解决方案 找点Java 的 Swing学习资料,这种界面估计用netbean或idea都可以自动生成. 解决方案二: import java.awt.Frame; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.event.Act

一个带完整采集小偷功能的IP查询代码

查询|ip地址|采集 一个带完整采集小偷功能的IP查询代码,采集来自IP138.CN的IP地址数据. 以下是代码:<% Response.expires = 0 Response.expiresabsolute = now() - 1 Response.addHeader "pragma","no-cache" Response.addHeader "cache-control","private" Response.c

一步一步SharePoint 2007之二十六:编写一个带事件的WebPart

摘要 前面的文章中,我们编写了一个非常简单的WebPart,它只能输出一个Hello World!的字符串. 很显然,这种WebPart根本就没有什么实际的作用.有没有办法编写比较复杂一些的,比如是带事件的 WebPart呢? 本篇文章将介绍如何编写一个带事件的WebPart. 正文 要实现带事件的WebPart,实际上就是要实现有复合控件的WebPart,这在开发过程中具有非常的的实 际意义.如果我们能够做到这点,那么,其它的什么样的WebPart,相信大家都能举一反三的做到. 这里,我就用一