MingHao_Hu

博客园 首页 新随笔 联系 订阅 管理

// Generated by Reflector from E:\CodeServer\Dll\Cfsns.CommonTools.dll
namespace Cfsns.Common.Tools.WebControlExtension
{
    using Cfsns.Common.Tools;
    using Cfsns.Common.Tools.EnumExtension;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Web.UI.WebControls;
   
    public static class WebControlExtension
    {
        public static void BindSelected(this CheckBoxList cb, string selectedString, string seperator = @"\|")
        {
            string[] strArray = Regex.Split(selectedString, seperator);
            for (int i = 0; i < cb.Items.Count; i++)
            {
                for (int j = 0; j < strArray.Length; j++)
                {
                    if (cb.Items[i].Value == strArray[j])
                    {
                        cb.Items[i].Selected = true;
                    }
                }
            }
        }
       
        public static void DataBindP(this ListControl control, string firstLineName = "请选择...", string value = "")
        {
            control.DataBind();
            if (!string.IsNullOrEmpty(firstLineName))
            {
                control.Items.Insert(0, new ListItem(firstLineName, value));
            }
        }
       
        public static void DataBindP(this ListControl control, IndexInfo toBindInfo, string firstLineName = null, string firstLineValue = "", string dataTextFormatString = null)
        {
            control.DataSource = toBindInfo;
            control.DataTextField = "Infos";
            control.DataValueField = "Name";
            control.DataTextFormatString = dataTextFormatString;
            control.DataBind();
            if (!string.IsNullOrEmpty(firstLineName))
            {
                control.Items.Insert(0, new ListItem(firstLineName, firstLineValue));
            }
        }
       
        public static void DataBindP(this Repeater control, Type type, string firstLineName = null, string firstLineValue = "", DataBindOptions option = 0)
        {
            Func<KeyValuePair<string, string>, string> keySelector = null;
            Dictionary<string, string> first = new Dictionary<string, string>();
            if (!string.IsNullOrEmpty(firstLineName))
            {
                first[firstLineValue] = firstLineName;
            }
            IOrderedEnumerable<KeyValuePair<string, string>> second = from p in type.GetEnumDescriptions()
                orderby ((int) Enum.Parse(type, p.Key)).ToString()
                select p;
            if (option == DataBindOptions.Text)
            {
                control.DataSource = first.Concat<KeyValuePair<string, string>>(second);
            }
            else if (option == DataBindOptions.Value)
            {
                if (keySelector == null)
                {
                    keySelector = p => ((int) Enum.Parse(type, p.Key)).ToString();
                }
                control.DataSource = first.Concat<KeyValuePair<string, string>>(second).ToDictionary<KeyValuePair<string, string>, string, string>(keySelector, p => p.Value);
            }
            else
            {
                control.DataSource = first.Concat<KeyValuePair<string, string>>(second).ToDictionary<KeyValuePair<string, string>, string, string>(p => p.Value, p => p.Value);
            }
            control.DataBind();
        }
       
        public static void DataBindP(this ListControl control, Type type, string firstLineName = null, string firstLineValue = "", string dataTextFormatString = null, DataBindOptions option = 0)
        {
            Func<KeyValuePair<string, string>, string> keySelector = null;
            Func<KeyValuePair<string, string>, string> func2 = null;
            Func<KeyValuePair<string, string>, string> func3 = null;
            control.DataTextField = "Value";
            control.DataValueField = "Key";
            control.DataTextFormatString = dataTextFormatString;
            if (option == DataBindOptions.Text)
            {
                if (keySelector == null)
                {
                    keySelector = p => ((int) Enum.Parse(type, p.Key)).ToString();
                }
                control.DataSource = type.GetEnumDescriptions().OrderBy<KeyValuePair<string, string>, string>(keySelector);
            }
            else if (option == DataBindOptions.Value)
            {
                if (func2 == null)
                {
                    func2 = p => ((int) Enum.Parse(type, p.Key)).ToString();
                }
                control.DataSource = from p in type.GetEnumDescriptions().ToDictionary<KeyValuePair<string, string>, string, string>(func2, p => p.Value)
                    orderby p.Key
                    select p;
            }
            else
            {
                if (func3 == null)
                {
                    func3 = p => ((int) Enum.Parse(type, p.Key)).ToString();
                }
                control.DataSource = type.GetEnumDescriptions().OrderBy<KeyValuePair<string, string>, string>(func3).ToDictionary<KeyValuePair<string, string>, string, string>(p => p.Value, p => p.Value);
            }
            control.DataBind();
            if (!string.IsNullOrEmpty(firstLineName))
            {
                control.Items.Insert(0, new ListItem(firstLineName, firstLineValue));
            }
        }
       
        public static string SelectedTexts(this CheckBoxList checkboxList, string seperator = ",")
        {
            StringBuilder builder = new StringBuilder();
            foreach (ListItem item in checkboxList.Items)
            {
                if (item.Selected)
                {
                    builder.Append(item.Text);
                    builder.Append(",");
                }
            }
            int length = builder.Length;
            return ((length > 0) ? builder.Remove(length - 1, 1).ToString() : string.Empty);
        }
       
        public static T SelectedValues<T>(this CheckBoxList checkBoxList, T defaultValue = null) where T: struct
        {
            object obj2 = 0;
            for (int i = 0; i < checkBoxList.Items.Count; i++)
            {
                if (checkBoxList.Items[i].Selected)
                {
                    obj2 = ((int) obj2) | Convert.ToInt32(checkBoxList.Items[i].Value.ToEnum<T>(defaultValue));
                }
            }
            if (!obj2.Equals(0))
            {
                return (T) obj2;
            }
            return defaultValue;
        }
       
        public static string SelectedValues(this CheckBoxList checkboxList, string seperator = "|")
        {
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < checkboxList.Items.Count; i++)
            {
                if (checkboxList.Items[i].Selected)
                {
                    builder.Append(checkboxList.Items[i].Value + seperator);
                }
            }
            if (builder.Length > 0)
            {
                builder.Remove(builder.Length - seperator.Length, seperator.Length);
            }
            return builder.ToString();
        }
       
        public enum DataBindOptions
        {
            Text,
            Value,
            Description
        }
    }
}

posted on 2012-09-24 09:35  MingHao_Hu  阅读(247)  评论(0编辑  收藏  举报