//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;
// }
// }
// }
//}
|