⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multilistbox.cs

📁 其主要的功能就是,进行后台管理模块整合. 1)其可以支持多个应用,多个模块的权限管理. 2)支持Access和MsSql200/2005. 3)采用角色来进行权限的授权,每个用户可以属于多个角色
💻 CS
📖 第 1 页 / 共 2 页
字号:
/************************************************************************************
 *      Copyright (C) 2008 supesoft.com,All Rights Reserved						    *
 *      File:																		*
 *				MultiListBox.cs	                                           			*
 *      Description:																*
 *				 Multi-ListBox控件 			    								    *
 *      Author:																		*
 *				Lzppcc														        *
 *				Lzppcc@hotmail.com													*
 *				http://www.supesoft.com												*
 *      Finish DateTime:															*
 *				2007年8月6日														*
 *      History:																	*
 ***********************************************************************************/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.Collections.Specialized;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using System.Globalization;

[assembly: WebResource("FrameWork.WebControls.Resource.moveAllLeft.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.moveAllLeft2.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.moveAllRight.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.moveAllRight2.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.moveLeft.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.moveLeft2.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.moveRight.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.moveRight2.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.sortDown.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.sortDown2.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.sortUp.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.sortUp2.gif", "image/gif")]
[assembly: WebResource("FrameWork.WebControls.Resource.MultiListBox.js", "text/javascript")]

namespace FrameWork.WebControls
{
    /// <summary>
    /// Multi-ListBox控件
    /// </summary>
    [ToolboxData("<{0}:MultiListBox runat=\"server\"></{0}:MultiListBox")]
    [
    ParseChildren(true),
    PersistChildren(false),
    ]
    public class MultiListBox : CompositeControl, IPostBackDataHandler
    {
        #region Fields
        private MultiListBoxItem _firstListItem = new MultiListBoxItem();
        private MultiListBoxItem _secondListItem = new MultiListBoxItem();
        //private bool _stateLoaded = false;
        /// <summary>
        /// 显示行
        /// </summary>
        protected int _rows = 4;
        //private bool _marked = false;
        private string _separator;
        #endregion

        /// <summary>
        /// 
        /// </summary>
        public void RaisePostDataChangedEvent()
        {

        }

        #region AddAttributesToRender
        /// <summary>
        /// 
        /// </summary>
        /// <param name="writer"></param>
        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Width, this.Width);
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "1");
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);
            //注册客户端操作脚本
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("<script language=\"javascript\">{0}", Environment.NewLine);
            sb.AppendFormat("var multiList=new MultiListBox(document.getElementById('{1}_firstListBox'),document.getElementById('{1}_secondListBox'),'{1}_');{0}", Environment.NewLine, this.ClientID);
            sb.AppendFormat("var img_AllLeft_have=\"{1}\";{0}", Environment.NewLine, GetWebResourceUrl("moveAllLeft.gif"));
            sb.AppendFormat("var img_AllLeft_has=\"{1}\";{0}", Environment.NewLine, GetWebResourceUrl("moveAllLeft2.gif"));
            sb.AppendFormat("var img_AllRight_have=\"{1}\";{0}", Environment.NewLine, GetWebResourceUrl("moveAllRight.gif"));
            sb.AppendFormat("var img_AllRight_has=\"{1}\";{0}", Environment.NewLine, GetWebResourceUrl("moveAllRight2.gif"));
            sb.AppendFormat("var img_Left_have=\"{1}\"{0};", Environment.NewLine, GetWebResourceUrl("moveLeft.gif"));
            sb.AppendFormat("var img_Left_has=\"{1}\";{0}", Environment.NewLine, GetWebResourceUrl("moveLeft2.gif"));
            sb.AppendFormat("var img_Right_have=\"{1}\";{0}", Environment.NewLine, GetWebResourceUrl("moveRight.gif"));
            sb.AppendFormat("var img_Right_has=\"{1}\";{0}", Environment.NewLine, GetWebResourceUrl("moveRight2.gif"));
            sb.Append("</script>");

            writer.Write(sb.ToString());
        }
        #endregion

        #region RenderContents
        /// <summary>
        /// 
        /// </summary>
        /// <param name="writer"></param>
        protected override void RenderContents(HtmlTextWriter writer)
        {
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "45%");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            //显示FirstListBox列表框
            RenderOptionsContents(writer, FirstListBox, "firstListBox", "multiList.transferRight()");
            writer.RenderEndTag();
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "10%");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");

            //间距

            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            //输出图标
            RenderMultiIcon(writer);
            //
            writer.RenderEndTag();
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "45%");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            //显示SecondListBox列表框
            RenderOptionsContents(writer, SecondListBox, "secondListBox", "multiList.transferLeft()");
            writer.RenderEndTag();
            writer.RenderEndTag();


        }
        #endregion

        #region Propertity
        /// <summary>
        /// 
        /// </summary>
        protected override HtmlTextWriterTag TagKey
        {
            get
            {
                return HtmlTextWriterTag.Table;
            }
        }

        /// <summary>
        /// 获取或设置为列表项提供文本内容的数据源字段
        /// </summary>
        [WebCategory("Data"), Browsable(true), Description("获取或设置为列表项提供文本内容的数据源字段")]
        public string DataTextField
        {
            get
            {
                object objTextField = this.ViewState["DataTextField"];
                if (objTextField != null)
                {
                    return (string)objTextField;
                }
                return string.Empty;

            }
            set
            {
                this.ViewState["DataTextField"] = value;
            }
        }

        /// <summary>
        /// 获取或设置为列表项提供值的数据源字段
        /// </summary>
        [WebCategory("Data"), Browsable(true), Description("获取或设置为列表项提供值的数据源字段")]
        public string DataValueField
        {
            get
            {
                object objValueField = this.ViewState["DataValueField"];
                if (objValueField != null)
                {
                    return (string)objValueField;
                }
                return string.Empty;
            }
            set
            {
                this.ViewState["DataValueField"] = value;
            }

        }

        /// <summary>
        /// 获取或设置格式化字符串,该字符串用来控制如何显示绑定到列表控件的数据。(从 ListControl 继承。)
        /// </summary>
        [WebCategory("Data"), Browsable(true), Description("获取或设置格式化字符串,该字符串用来控制如何显示绑定到列表控件的数据")]
        protected string DataTextFormatString
        {
            get
            {
                object objTextFormat = this.ViewState["DataTextFormatString"];
                if (objTextFormat != null)
                {
                    return (string)objTextFormat;
                }
                return string.Empty;
            }
            set
            {
                this.ViewState["DataTextFormatString"] = value;
            }

        }

        /// <summary>
        /// 第一个列表框控件(源列表框)
        /// </summary>
        [Browsable(false)]
        //[NotifyParentProperty(false)]
        //[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [PersistenceMode(PersistenceMode.InnerProperty)]
        public MultiListBoxItem FirstListBox
        {
            get
            {
                if (_firstListItem == null)
                    _firstListItem = new MultiListBoxItem();
                return _firstListItem;
            }
        }

        /// <summary>
        /// 第二个列表框控件(目标列表框)
        /// </summary>
        [Browsable(false)]
        [PersistenceMode(PersistenceMode.InnerProperty)]
        public MultiListBoxItem SecondListBox
        {
            get
            {
                if (_secondListItem == null)
                    _secondListItem = new MultiListBoxItem();
                return _secondListItem;
            }
        }

        /// <summary>
        /// 获取或设置控件显示的宽度
        /// </summary>
        [WebCategory("Style"), Browsable(true), Description("获取或设置控件显示的宽度")]
        public new string Width
        {
            get
            {
                string val = Attributes["width"];
                if (val != null)
                {
                    return val;
                }
                return string.Empty;
            }
            set
            {
                if (value == null || value == string.Empty)
                    Attributes.Remove("width");
                else
                    Attributes["width"] = value;
            }
        }

        /// <summary>
        /// 获取或设置控件显示的高度
        /// </summary>
        [WebCategory("Style"), Browsable(true), Description("获取或设置控件显示的高度")]
        public string Heigth
        {
            get
            {
                string val = Attributes["height"];
                if (val == null)
                    return string.Empty;
                return val;
            }
            set
            {
                if (value == null || value == string.Empty)
                    Attributes.Remove("height");
                else
                    Attributes["height"] = value;
            }
        }

        /// <summary>
        /// 两个ListBox列表框中间间距
        /// </summary>
        public string Separator
        {
            get { return _separator; }
            set { _separator = value; }
        }
        /// <summary>
        /// 获取或设置列表框控件显示个数
        /// </summary>
        [WebCategory("Style"), Browsable(true), Description("获取或设置列表框控件显示个数")]
        public int Rows
        {
            get
            {
                return _rows;
            }
            set
            {
                _rows = value;
            }
        }

        /// <summary>
        /// 列表的选择模式
        /// </summary>
        [WebCategory("Behavior"), Browsable(true), DefaultValue(0), Description("列表的选择模式")]
        public ListSelectionMode SelectionMode
        {
            get
            {
                object objMode = this.ViewState["SelectionMode"];
                if (objMode != null)
                {
                    return (ListSelectionMode)objMode;
                }
                return ListSelectionMode.Single;

            }
            set
            {
                if ((value < ListSelectionMode.Single) || (value > ListSelectionMode.Multiple))
                {
                    throw new ArgumentOutOfRangeException("value");
                }
                this.ViewState["SelectionMode"] = value;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        protected string HFItemsAdded
        {
            get { return this.ClientID + "_ADDED"; }
        }

        /// <summary>
        /// 
        /// </summary>
        protected string HFItemsRemoved
        {
            get { return this.ClientID + "_REMOVED"; }
        }
        #endregion

        #region ViewStates
        /// <summary>
        /// 
        /// </summary>
        /// <param name="savedState"></param>
        protected override void LoadViewState(object savedState)
        {
            if (savedState != null)
            {
                Triplet triplet = (Triplet)savedState;
                base.LoadViewState(triplet.First);
                Reflector.InvokeMethod(this.FirstListBox.Items, "LoadViewState", new object[] { triplet.Second });
                Reflector.InvokeMethod(this.SecondListBox.Items, "LoadViewState", new object[] { triplet.Third });
            }
            else
            {
                base.LoadViewState(null);
            }
            //this._stateLoaded = true;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        protected override object SaveViewState()
        {
            if (EnableViewState == false)
                return null;
            //启用控件视图状态
            object x = base.SaveViewState();
            object y = Reflector.InvokeMethod(FirstListBox.Items, "SaveViewState", null);
            object z = Reflector.InvokeMethod(SecondListBox.Items, "SaveViewState", null);
            if ((x == null) && (y == null) && (z == null))
            {
                return null;
            }
            return new Triplet(x, y, z);
        }

        #endregion



        #region OnDataBinding
        /// <summary>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -