暂时保存XControl,回家!
nnhy authored at 2011-01-10 18:17:37
13.44 KiB
X
//using System;
//using System.Collections.Generic;
//using System.ComponentModel;
//using System.ComponentModel.Design;
//using System.Drawing;
//using System.Reflection;
//using System.Web.UI;
//using System.Web.UI.Design;
//using System.Web.UI.Design.WebControls;
//using System.Web.UI.WebControls;

//namespace XControl
//{
//    /// <summary>
//    /// ÖØдGridView
//    /// </summary>
//    [ToolboxItem(false)]
//    [DefaultProperty("Text")]
//    [ToolboxData("<{0}:XGridView runat=server></{0}:XGridView>")]
//    [Designer(typeof(XGridViewDesigner))]
//    [ToolboxBitmap(typeof(GridView))]
//    public class XGridView : GridView
//    {
//        private Boolean _SetEntry = false;
//        /// <summary>
//        /// ÉèÖÃʵÌå×Ö¶Î
//        /// </summary>
//        [Category(" רÓÃÊôÐÔ"), DefaultValue(false), Description("ÉèÖÃʵÌå×Ö¶Î"), DesignOnly(true)]
//        public Boolean SetEntry
//        {
//            get
//            {
//                return _SetEntry;
//            }
//            set
//            {
//                try
//                {
//                    CreateEntryColumns();
//                }
//                catch (Exception ex)
//                {
//                    ViewHelper.MsgBox<XGridView>(ex.Message);
//                }
//                _SetEntry = value;
//            }
//        }

//        /// <summary>
//        /// ½¨Á¢ÊµÌåÁÐ×ֶμ¯¡£°ÑÒѾ­½¨Á¢ºÃµÄÁÐתΪʵÌåÁС£
//        /// Ö÷ÒªÐ޸ĸ÷ÁеÄHeaderTextΪÖÐÎÄ£¬Í¬Ê±µ÷Õû¸÷ÁÐ˳ÐòΪ¶ÔÓ¦µÄʵÌåÊôÐÔµÄ˳Ðò¡£
//        /// </summary>
//        private void CreateEntryColumns()
//        {
//            Type t = ViewHelper.GetEntryType<XGridView>(Site);
//            if (t == null) return;
//            List<FieldItem> list = ViewHelper.AllFields(t);
//            if (list == null) return;
//            XGridView gv = this;
//            if (gv == null) return;

//            // ˼·
//            // °ÑËùÓÐÊôÓÚʵÌåÀàµÄÁÐ×ֶδÓcsÖÐɾ³ý£¬Ìí¼Óµ½Ò»¸öÁÙʱÁбítcsÖÐ
//            // ´ÓÍ·¿ªÊ¼±éÀúʵÌåÀàµÄÊôÐÔ£¬ÅжÏÿ¸öÊôÐÔÊÇ·ñ´æÔÚÓÚtcsÖУ¬´æÔÚÔòÐÞ¸ÄHeaderTextΪÖÐÎÄ£¬²¢Ìí¼Óµ½ncsÖÐ

//            Dictionary<String, DataControlField> tcs = new Dictionary<String, DataControlField>();
//            foreach (DataControlField dcf in gv.Columns)
//            {
//                foreach (FieldItem fi in list)
//                {
//                    if (fi.Name == dcf.HeaderText)
//                    {
//                        // ÒòÔÚ±éÀúcsµÄ¹ý³ÌÖв»ÄÜÐÞ¸Äcs£¬ËùÒÔÕâÀïÔÝʱ²»´ÓcsÖÐɾ³ýdcf£¬±éÀúÍê³Éºóɾ³ý
//                        tcs.Add(fi.Name, dcf);
//                        break;
//                    }
//                }
//            }
//            // ɾ³ýÊôÓÚʵÌåÀàµÄÁÐ
//            foreach (DataControlField dcf in tcs.Values)
//            {
//                gv.Columns.Remove(dcf);
//            }
//            String keyname = (gv.DataKeyNames != null && gv.DataKeyNames.Length > 0) ? gv.DataKeyNames[0] : null;
//            // °´Ë³ÐòÌí¼ÓʵÌåÀàµÄµ÷ÕûºóµÄÁÐ
//            foreach (FieldItem fi in list)
//            {
//                if (tcs.ContainsKey(fi.Name) && fi.DataObjectField.Length <= 255)
//                {
//                    DataControlField dcf = tcs[fi.Name];
//                    //Èç¹ûÉèÖÃÁËÖ÷¼ü×ֶΣ¬»òÊDZêʶ×ֶΣ¬Ôò×÷Ϊģ°æÁаó¶¨Select¹¦ÄÜ
//                    if (!String.IsNullOrEmpty(keyname) && fi.Name == keyname || String.IsNullOrEmpty(keyname) && fi.DataObjectField.IsIdentity)
//                    {
//                        TemplateField tf = new TemplateField();
//                        String str = String.Format("<asp:LinkButton id=\"{0}LinkButton1\" runat=\"server\"  CausesValidation=\"{1}\" Text='<%# Eval(\"{0}\") %>' CommandName=\"Select\"></asp:LinkButton>", fi.Name, Boolean.FalseString);
//                        tf.ItemTemplate = ControlParser.ParseTemplate((IDesignerHost)Site.GetService(typeof(IDesignerHost)), str);
//                        dcf = tf as DataControlField;
//                    }

//                    //Ö¸¶¨ÅÅÐò±í´ïʽ
//                    dcf.SortExpression = fi.Name;

//                    //Ö¸¶¨Ê±¼ä¸ñʽ×Ö·û´®
//                    if (fi.Info.PropertyType == typeof(DateTime))
//                    {
//                        BoundField bc = dcf as BoundField;
//                        if (bc != null) bc.DataFormatString = "{0:yyyy-MM-dd HH:mm:ss}";
//                    }

//                    dcf.HeaderText = (String.IsNullOrEmpty(fi.Description)) ? fi.Name : fi.Description;

//                    if (fi.Info.PropertyType == typeof(Int32))
//                    {
//                        //dcf.HeaderStyle.Width = Unit.Pixel(40);
//                        //dcf.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
//                        dcf.HeaderStyle.CssClass = "IntHead";
//                        dcf.ItemStyle.CssClass = "IntItem";
//                    }
//                    else if (fi.Info.PropertyType == typeof(DateTime) || fi.Info.PropertyType == typeof(Nullable<DateTime>))
//                    {
//                        //dcf.HeaderStyle.Width = Unit.Pixel(140);
//                        //dcf.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
//                        dcf.HeaderStyle.CssClass = "DateHead";
//                        dcf.ItemStyle.CssClass = "DateItem";
//                    }
//                    else
//                    {
//                        //dcf.HeaderStyle.Width = Unit.Pixel(150);
//                        dcf.HeaderStyle.CssClass = "TextHead";
//                        dcf.ItemStyle.CssClass = "TextItem";
//                    }
//                    gv.Columns.Add(dcf);
//                }
//            }

//            //¶îÍ⹤×÷£¬ÉèÖÃObjectDataSourceµÄSelectCountMethod
//            String datasourceid = gv.DataSourceID;
//            if (String.IsNullOrEmpty(datasourceid)) return;
//            // ÕÒµ½Êý¾Ý°ó¶¨¿Ø¼þObjectDataSource
//            ObjectDataSource obj = gv.Page.FindControl(datasourceid) as ObjectDataSource;
//            if (obj == null) return;
//            //Ö¸¶¨·ÖÒ³·½·¨
//            Boolean canpaging = true;
//            if (String.IsNullOrEmpty(obj.SelectCountMethod)) obj.SelectCountMethod = "FindCount";
//            //Èç¹û²»ÊÇĬÈϵÄFindAll£¬ÔòʹÓÃй¹Ôì·½·¨
//            if (!obj.SelectMethod.Equals("FindAll", StringComparison.OrdinalIgnoreCase))
//                obj.SelectCountMethod = obj.SelectMethod + "Count";
//            //Ö¸¶¨·ÖÒ³²ÎÊý
//            if (obj.SelectParameters["startRowIndex"] == null) 
//                canpaging = false;
//            else if (String.IsNullOrEmpty(obj.SelectParameters["startRowIndex"].DefaultValue))
//                obj.SelectParameters["startRowIndex"].DefaultValue = "0";

//            if (obj.SelectParameters["maximumRows"] == null)
//                canpaging = false;
//            else if (String.IsNullOrEmpty(obj.SelectParameters["maximumRows"].DefaultValue))
//                obj.SelectParameters["maximumRows"].DefaultValue = Int32.MaxValue.ToString();

//            //´ò¿ª·ÖÒ³
//            if (canpaging)
//            {
//                obj.EnablePaging = true;
//                gv.AllowPaging = true;
//            }
//            else
//                ViewHelper.MsgBox<XGridView>(String.Format("µ±Ç°µÄ²éѯ·½·¨{0}²»Ö§³Ö·ÖÒ³£¬ÇëÑ¡Ôñ´øÓзÖÒ³²ÎÊýµÄ²éѯ·½·¨£¡", obj.SelectMethod));

//            //Ö¸¶¨ÅÅÐò²ÎÊý
//            Boolean cansort = false;//ÊÇ·ñ¿ÉÒÔÅÅÐò
//            if (obj.SelectParameters != null)
//            {
//                //±éÀúËùÓÐSelect²ÎÊý£¬ÕÒµ½µÚÒ»¸ö´øÓÐorder×ÖÑùµÄ²ÎÊý×öΪÅÅÐò²ÎÊý
//                foreach (Parameter item in obj.SelectParameters)
//                {
//                    if (item.Name.ToLower().IndexOf("order") >= 0)
//                    {
//                        obj.SortParameterName = item.Name;
//                        cansort = true;
//                        break;
//                    }
//                }
//            }
//            if (cansort)
//                gv.AllowSorting = true;
//            else
//                ViewHelper.MsgBox<XGridView>(String.Format("µ±Ç°µÄ²éѯ·½·¨{0}²»Ö§³ÖÅÅÐò£¬ÇëÑ¡Ôñ´øÓÐÅÅÐò²ÎÊýµÄ²éѯ·½·¨£¡", obj.SelectMethod));
//        }

//        private Boolean _SetDefaultStype = false;
//        /// <summary>
//        /// ÉèÖÃÑùʽ
//        /// </summary>
//        [Category(" רÓÃÊôÐÔ"), DefaultValue(false), Description("ÉèÖÃÑùʽ"), DesignOnly(true)]
//        public Boolean SetDefaultStype
//        {
//            get { return _SetDefaultStype; }
//            set
//            {
//                try
//                {
//                    //XGridView gv = this;
//                    //if (gv == null) return;
//                    //gv.BorderColor = System.Drawing.Color.FromArgb(0x82, 0xA8, 0xCF);
//                    //gv.BorderStyle = System.Web.UI.WebControls.BorderStyle.Solid;
//                    //gv.BorderWidth = Unit.Pixel(1);
//                    //gv.Font.Underline = false;
//                    //gv.SelectedRowStyle.BackColor = System.Drawing.Color.FromArgb(0xc0, 0xff, 0xc0);
//                    //gv.AllowPaging = true;
//                    //gv.AlternatingRowStyle.BackColor = System.Drawing.Color.FromArgb(0xef, 0xe6, 0xf7);
//                    //gv.PagerStyle.HorizontalAlign = HorizontalAlign.Right;
//                    //gv.PagerStyle.Font.Size = FontUnit.Point(12);
//                    //gv.PagerStyle.Font.Underline = false;
//                    //if (gv.Columns == null || gv.Columns.Count < 1) return;
//                    //foreach (DataControlField dcf in gv.Columns)
//                    //{
//                    //    dcf.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
//                    //    dcf.HeaderStyle.BorderWidth = Unit.Pixel(1);
//                    //    dcf.HeaderStyle.BorderColor = System.Drawing.Color.FromArgb(0x82, 0xA8, 0xCF);
//                    //    dcf.HeaderStyle.BorderStyle = System.Web.UI.WebControls.BorderStyle.Solid;
//                    //    dcf.HeaderStyle.BackColor = System.Drawing.Color.FromArgb(0xe3, 0xef, 0xff);
//                    //    dcf.HeaderStyle.Height = Unit.Pixel(20);
//                    //    dcf.HeaderStyle.Font.Bold = true;
//                    //    dcf.HeaderStyle.ForeColor = System.Drawing.Color.Black;
//                    //    //dcf.HeaderStyle.Font.Size = FontUnit.Point(11);
//                    //    dcf.HeaderStyle.Font.Underline = false;
//                    //    dcf.ItemStyle.BorderWidth = Unit.Pixel(1);
//                    //    dcf.ItemStyle.BorderColor = System.Drawing.Color.FromArgb(0x82, 0xA8, 0xCF);
//                    //    dcf.ItemStyle.BorderStyle = System.Web.UI.WebControls.BorderStyle.Solid;
//                    //    dcf.ItemStyle.Height = Unit.Pixel(25);
//                    //}
//                }
//                catch (Exception ex)
//                {
//                    ViewHelper.MsgBox<XGridView>(ex.Message);
//                }
//                _SetDefaultStype = value;
//            }
//        }

//        /// <summary>
//        /// ÒÑÖØд¡£Çл»Ò³Ê±È¡ÏûÔ­Ñ¡Ôñ
//        /// </summary>
//        /// <param name="e"></param>
//        protected override void OnPageIndexChanging(GridViewPageEventArgs e)
//        {
//            this.SelectedIndex = -1;
//            base.OnPageIndexChanging(e);
//        }
//    }

//    /// <summary>
//    /// ÔÚ¿ÉÊÓ»¯Éè¼ÆÆ÷ÖÐΪ XControl.XGridView ¿Ø¼þÌṩÉè¼Æʱ֧³Ö¡£
//    /// </summary>
//    public class XGridViewDesigner : GridViewDesigner
//    {
//        /// <summary>
//        /// µ±¹ØÁª¿Ø¼þµÄÊý¾ÝÔ´¼Ü¹¹¸ü¸Äʱ£¬½«µ÷ÓÃËü¡£
//        /// </summary>
//        protected override void OnSchemaRefreshed()
//        {
//            base.OnSchemaRefreshed();
//            //ÏÈÉú³ÉÔ­À´µÄ£¬ÔÙÉú³ÉеÄ
//            //if (!InTemplateMode && !IgnoreSchemaRefreshedEvent)
//            if (!InTemplateMode)
//            {
//                try
//                {
//                    XGridView gv = base.Component as XGridView;
//                    if (gv == null) return;
//                    DataControlFieldCollection cs = gv.Columns;
//                    if (cs == null || cs.Count < 1) return;
//                    gv.SetEntry = !gv.SetEntry;
//                    //gv.SetDefaultStype = !gv.SetDefaultStype;
//                    //gv.CreateEntryColumns();
//                    //gv.SetDefaultStype();
//                    //gv.Columns = cs;
//                    //gv.Columns.Clear();
//                    //foreach (DataControlField dcf in cs) gv.Columns.Add(dcf);
//                }
//                catch (Exception ex)
//                {
//                    ViewHelper.MsgBox<XGridView>(ex.Message);
//                }
//            }
//        }

//        private Boolean IgnoreSchemaRefreshedEvent
//        {
//            get
//            {
//                Type t = typeof(GridViewDesigner);
//                if (t == null) return false;
//                PropertyInfo pi = t.GetProperty("_ignoreSchemaRefreshedEvent", BindingFlags.Instance | BindingFlags.NonPublic);
//                if (pi == null) return false;
//                return (Boolean)pi.GetValue((this as GridViewDesigner), null);
//            }
//        }

//        private ISite Site
//        {
//            get
//            {
//                return base.Component.Site;
//            }
//        }
//    }
//}