using HelperDB;
using Newtonsoft.Json;
using AIMSExtension;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Serialization;
namespace DrawGraph
{
    [Serializable, JsonObject(MemberSerialization.OptOut)]
    /// 
    /// 模板管理工具的具体类,全局绑定在这个类里
    /// 
    public class TemplateManage
    {
        public TemplateManage()
        {
        }
        #region 属性 
        private List manageList = new List();
        private string msgStr = "";
        private string projectName = "";
        private string direct = "";
        private int id;
        private object opeRecord = null;
        PropertyObject operationRecordProObj = new PropertyObject();
        private ZedGraphControl zedControl = null;
        private int zjpyl = 0;
        private int hzjpyl = 0;
        private int dfzjpyl = 0;
        private int locationY;
        //private string hospitalName = "";
        private XmlUtil xmlOpe = new XmlUtil(System.Windows.Forms.Application.StartupPath + "\\AIMS.xml");
        private TypesettingEnum typesetting = TypesettingEnum.Vertical;
        private PageTypeEnum pageType = PageTypeEnum.A4;
        public int LocationY
        {
            set
            {
                locationY = value;
                if (zedControl != null) zedControl.Location = new Point(0, 0 - LocationY);//0);
            }
            get { return locationY; }
        }
        /// 
        /// 管理器的列表
        /// 
        public List ManageList
        {
            get
            {
                return manageList;
            }
        }
        [JsonIgnore]
        [XmlIgnore]
        public string MsgStr
        {
            get
            {
                return msgStr;
            }
            set
            {
                msgStr = value;
            }
        }
        /// 
        /// 项目名称
        /// 
        public string ProjectName
        {
            get
            {
                return projectName;
            }
            set
            {
                projectName = value;
                Direct = value;
            }
        }
        /// 
        /// 根据类.属性返回指定的绘图组件通知更新
        /// 
        /// 类名加属性名
        /// 新文本
        /// 新值
        /// 是否更新数据库
        /// 要更新的对象
        public int NotifyUpdate(string propertyName, string newText, string newValue, bool isUpdate = false, object t = null)
        {
            int i = 1;
            if (isUpdate && t != null)
            {
                //为真时更新数据库
                i = DBManage.SetOperationRecordValue(t, propertyName, newValue);
            }
            if (isUpdate && i <= 0) return i;
            foreach (AreaManageBase area in manageList)
            {
                if (area.PackManage != null)
                {
                    //找到以类.属性结尾的对象
                    List packObjs = area.PackManage.ListPob.Where(s => s.PackTag.EndsWith(propertyName.Replace('.', '_'))).ToList();
                    foreach (PackObjBase pack in packObjs)
                    {
                        pack.PackText = newText;
                        pack.PackValue = newValue;
                        //pack.IsSelfFresh = false;
                        pack.Draw();
                    }
                }
            }
            return i;
        }
        /// 
        /// 设置对象的值
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public void SetObjValue(object t, string propertyName, string text, string value, bool isUpdate = false)
        {
            //设置对象的值
            object oldValue = EntityObjectChangeNotifier.SubObjSetValue(t, propertyName, value);
            //是否更新数据库并通知组件重绘
            NotifyUpdate(propertyName, text, value, isUpdate, t);
        }
        [JsonIgnore]
        [XmlIgnore]
        public int Id
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
                if (manageList.Count > 0)
                {
                    foreach (AreaManageBase area in manageList)
                    {
                        area.Id = id;
                    }
                }
            }
        }
        [JsonIgnore]
        [XmlIgnore]
        public string Direct
        {
            get
            {
                return direct;
            }
            set
            {
                string dir = projectName;
                if (manageList.Count > 0)
                {
                    foreach (AreaManageBase area in manageList)
                    {
                        area.Direct = dir;
                    }
                }
                direct = dir;
            }
        }
        [JsonIgnore]
        [XmlIgnore]
        public object OpeRecord
        {
            get
            {
                return opeRecord;
            }
            set
            {
                opeRecord = value;
                foreach (AreaManageBase area in manageList)
                {
                    area.OpeRecord = opeRecord;
                }
            }
        }
        [JsonIgnore]
        [XmlIgnore]
        public ZedGraphControl ZedControl
        {
            get
            {
                return zedControl;
            }
            set
            {
                zedControl = value;
                if (zedControl != null)
                {
                    //把本界面的画板控件给所有子包控件传递。
                    foreach (AreaManageBase area in manageList)
                    {
                        area.SetZedControl(zedControl);
                    }
                }
            }
        }
        /// 
        /// 组件的偏移量
        /// 
        public int Zjpyl
        {
            get
            {
                return zjpyl;
            }
            set
            {
                foreach (AreaManageBase area in manageList)
                {
                    List ableS = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                    foreach (PackObjBase pack in ableS)
                    {
                        pack.Zjpyl = value;
                    }
                }
                zjpyl = value;
            }
        }
        public int Hzjpyl
        {
            get
            {
                return hzjpyl;
            }
            set
            {
                foreach (AreaManageBase area in manageList)
                {
                    List ableS = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                    foreach (PackObjBase pack in ableS)
                    {
                        pack.Hzjpyl = value;
                    }
                }
                hzjpyl = value;
            }
        }
        public int Dfzjpyl
        {
            get
            {
                return dfzjpyl;
            }
            set
            {
                //foreach (AreaManageBase area in manageList)
                //{
                //    List ableS = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                //    foreach (PackObjBase pack in ableS)
                //    {
                //        pack.DfHzjpyl = value;
                //    }
                //}
                dfzjpyl = value;
            }
        }
        /// 
        /// 排版,默认竖着排
        /// 
        public TypesettingEnum Typesetting
        {
            get
            {
                return typesetting;
            }
            set
            {
                typesetting = value;
            }
        }
        public PageTypeEnum PageType
        {
            get
            {
                return pageType;
            }
            set
            {
                pageType = value;
            }
        }
        #endregion 属性结束
        #region 事件
        /// 
        /// 鼠标点击画板
        /// 
        /// 
        /// 
        public void zedControl_MouseMoveEvent(ZedGraphControl sender, MouseEventArgs e)
        {
            foreach (AreaManageBase area in manageList)
            {
                area.MouseMove(sender, e);
            }
        }
        /// 
        /// 点击画板
        /// 
        /// 
        /// 
        public void zedControl_MouseDownEvent(ZedGraphControl sender, MouseEventArgs e)
        {
            if (ZedControl == null) return;
            double y = Convert.ToDouble(Convert.ToDouble(e.Y) / Convert.ToDouble(ZedControl.Height));
            double x = Convert.ToDouble(Convert.ToDouble(e.X) / Convert.ToDouble(ZedControl.Width));
            //foreach (AreaManageBase area in manageList)
            //{
            //    if (e.Button == System.Windows.Forms.MouseButtons.Left)
            //    {
            //        #region 为可编辑组件触发响应事件
            //        List editPack = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
            //        foreach (PackObjBase pack in editPack)
            //        {
            //            AbleEditPackObj aEdit = pack as AbleEditPackObj;
            //            if (aEdit != null)
            //            {
            //                if ((x > aEdit.RealX && x < aEdit.RealEndX) && (y > aEdit.RealY && y < aEdit.RealEndY))
            //                {
            //                    if (!aEdit.IsDoubleClick)
            //                    {
            //                        aEdit.onClick(e);
            //                        break;
            //                    }
            //                }
            //            }
            //        }
            //        #endregion
            //    }
            //    area.MouseDown(sender, e);
            //}
            foreach (AreaManageBase area in manageList)
            {
                area.MouseDown(sender, e);
            }
        }
        public void zedControl_MouseUpEvent(ZedGraphControl sender, MouseEventArgs e)
        {
            foreach (AreaManageBase area in manageList)
            {
                area.MouseUp(sender, e);
            }
        }
        public void zedControl_MouseDoubleClick(ZedGraphControl sender, MouseEventArgs e)
        {
            if (ZedControl == null) return;
            double y = Convert.ToDouble(Convert.ToDouble(e.Y) / Convert.ToDouble(ZedControl.Height));
            double x = Convert.ToDouble(Convert.ToDouble(e.X) / Convert.ToDouble(ZedControl.Width));
            foreach (AreaManageBase area in manageList)
            {
                if (e.Button == System.Windows.Forms.MouseButtons.Left)
                {
                    #region 为可编辑组件触发响应事件
                    List editPack = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                    foreach (PackObjBase pack in editPack)
                    {
                        AbleEditPackObj aEdit = pack as AbleEditPackObj;
                        if (aEdit != null)
                        {
                            if ((x > aEdit.RealX && x < aEdit.RealEndX) && (y > aEdit.RealY && y < aEdit.RealEndY))
                            {
                                if (!aEdit.IsDoubleClick)
                                {
                                    aEdit.onClick(e);
                                    break;
                                }
                            }
                        }
                    }
                    #endregion
                }
                area.MouseDoubleClick(sender, e);
            }
        }
        public void zedControl_KeyUp(ZedGraphControl sender, KeyEventArgs e)
        {
            foreach (AreaManageBase area in manageList)
            {
                area.KeyUp(sender, e);
            }
        }
        public void BindTempData()
        {
            foreach (AreaManageBase area in manageList)
            {
                area.BindTempData();
            }
        }
        #endregion 事件结束
        /// 
        /// 增加一个管理器
        /// 
        /// 管理器
        /// 
        public bool AddManage(AreaManageBase _manager)
        {
            bool reVal = false;
            AreaManageBase manage = manageList.FirstOrDefault(s => s.Name == _manager.Name || s.ClassName == _manager.ClassName);
            if (manage == null)
            {
                manageList.Add(_manager);
                reVal = true;
            }
            return reVal;
        }
        public int GetPageWidth()
        {
            int w = 900;
            if (pageType == PageTypeEnum.A3)
            {
                w = 1280;
            }
            return w;
        }
        /// 
        /// 重画区域
        /// 
        public void DrawArea()
        {
            Clear();
            for (int i = 0; i < ManageList.Count; i++)
            {
                AreaManageBase manageTemp = ManageList[i];
                if (manageTemp != null)
                {
                    if (i == 0)
                    {
                        manageTemp.Draw();
                    }
                    else
                    {
                        manageTemp.Draw(true);
                    }
                }
            }
        }
        /// 
        /// 根据标签查找指定的绘图组件
        /// 
        /// 标签名,使用类.属性就可以了
        /// 
        public T GetPackObjectOTag(string tagName) where T : PackObjBase
        {
            T pack = default;
            for (int i = 0; i < ManageList.Count; i++)
            {
                AreaManageBase manageTemp = ManageList[i];
                if (manageTemp != null)
                {
                    pack = (T)manageTemp.GetPackObjectOTag(tagName);
                    if (pack != null) break;
                }
            }
            return pack;
        }
        /// 
        /// 删除区域
        /// 
        /// 
        /// 
        public bool DelManage(AreaManageBase _manager)
        {
            bool reVal = false;
            if (_manager != null && manageList.Count > 0)
            {
                reVal = manageList.Remove(_manager);
            }
            return reVal;
        }
        /// 
        /// 保存
        /// 
        /// 
        public bool Save()
        {
            bool reVal = false;
            try
            {
                if (ProjectName == "")
                {
                    reVal = false;
                    MsgStr = "医院名称或项目名称不能为空";
                    return reVal;
                }
                string FilePath = Direct;
                bool allAreaSaveOk = true;
                if (manageList.Count > 0)
                {
                    foreach (AreaManageBase area in manageList)
                    {
                        //区域保存值返回
                        bool areaSaveOk = area.Save();
                        if (!areaSaveOk)
                        {
                            allAreaSaveOk = false;
                            MsgStr = area.MsgStr;
                        }
                    }
                }
                else
                {
                    //如果manageList为空则不允许保存模板管理器
                    allAreaSaveOk = false;
                    MsgStr = "没有具体的区域管理器不需要保存";
                }
                //如果所有区域都保存成功,才能保存模板管理器
                if (allAreaSaveOk)
                {
                    string jsonStr = JsonConvert.SerializeObject(this);
                    try
                    {
                        DBHelper.ExecNonQuery("  update [OperationRecordTemplate] set jsondate=N'" + jsonStr + "' where  Id='" + Id + "' ");
                        msgStr = FilePath + "保存成功";
                        reVal = true;
                    }
                    catch (Exception ex)
                    {
                        msgStr = ex.Message.ToString();
                    }
                    finally
                    {
                    }
                }
            }
            catch (Exception exp)
            {
                reVal = false;
                MsgStr = exp.Message;
            }
            return reVal;
        }
        /// 
        /// 全局绑定之后在调用各自的区域管理器进行绑定
        /// 
        public void Bind(string AreaManageName = null)
        {
            try
            {
                //各区域的数据绑定
                foreach (AreaManageBase area in manageList)
                {
                    if (AreaManageName != null && area.Name != AreaManageName && area.ClassName != AreaManageName) continue;
                    #region 绑定可编辑区域的点击事件
                    //绑定所有可编辑区域
                    List editPack = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                    foreach (PackObjBase pack in editPack)
                    {
                        AbleEditPackObj aEdit = pack as AbleEditPackObj;
                        if (aEdit != null)
                        {
                            //aEdit.ClearControl();
                            aEdit.IsVisible = false;
                            aEdit.Click -= new AbleEditPackObj.ClickEventHandler(editAr_Click);
                            aEdit.Click += new AbleEditPackObj.ClickEventHandler(editAr_Click);
                            aEdit.SetControl();
                            //aEdit.IsVisible = DrawGraphModels.Util.EIsBool.False;;
                        }
                    }
                    #endregion
                    area.IsSelfFresh = false;
                    area.Bind();
                    area.IsSelfFresh = true;
                }
                if (zedControl != null)
                    zedControl.Refresh();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void ClearSelectCouve()
        {
            //各区域的数据绑定
            foreach (AreaManageBase area in manageList)
            {
                area.clearSelectCouve_Click();
            }
        }
        public void frmInstance_ConfigParam()
        {
            //各区域的数据绑定
            foreach (AreaManageBase area in manageList)
            {
                area.frmInstance_ConfigParam();
            }
        }
        public void initChart()
        {
            //各区域的数据绑定
            foreach (AreaManageBase area in manageList)
            {
                area.initChart();
            }
        }
        public bool Verification()
        {
            foreach (AreaManageBase area in manageList)
            {
                bool reVal = area.Verification();
                if (!reVal)
                {
                    //只要有一个区域的验证返回失败即失败
                    return reVal;
                }
            }
            return true;
        }
        /// 
        /// 响应可编辑组件的单击事件
        /// 
        /// 
        /// 
        public void editAr_Click(object sender, EventArgs e)
        {
            foreach (AreaManageBase area in manageList)
            {
                area.editAr_Click(sender, e);
            }
        }
        /// 
        /// 加载所有区域里的组件
        /// 
        public bool Load()
        {
            bool reVal = true;
            if (manageList.Count > 0)
            {
                bool temp = true;
                for (int i = 0; i < manageList.Count; i++)
                {
                    AreaManageBase area = manageList[i];
                    //通过名称得到一个具体的区域实例
                    AreaManageBase areaSub = BoardFormUtil.AreaManageFactory(area.ClassName, area.OpeRecord, area.ZedControl, this, area.Name);
                    //父类的值传给子类
                    BoardUtil.MainToSub(area, areaSub);
                    manageList[i] = areaSub;
                    area = manageList[i];
                    //区域保存值返回
                    bool areaLoadOk = area.Load(Id);
                    if (!areaLoadOk)
                    {
                        MsgStr = area.Name + ":" + area.MsgStr;
                        temp = false;
                    }
                    #region 绑定可编辑区域的点击事件
                    //绑定所有可编辑区域
                    List editPack = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                    foreach (PackObjBase pack in editPack)
                    {
                        AbleEditPackObj aEdit = pack as AbleEditPackObj;
                        if (aEdit != null)
                        {
                            //aEdit.IsVisible = false;
                            aEdit.Click -= new AbleEditPackObj.ClickEventHandler(editAr_Click);
                            aEdit.Click += new AbleEditPackObj.ClickEventHandler(editAr_Click);
                            aEdit.SetControl();
                            //aEdit.IsVisible = DrawGraphModels.Util.EIsBool.False;
                        }
                    }
                    #endregion
                }
                SetPYL();
                if (!temp)
                {
                    reVal = false;
                }
            }
            return reVal;
        }
        /// 
        /// 获取第一个板子的宽高
        /// 
        public Point GetBorderPackWH()
        {
            Point point = new Point();
            if (typesetting == TypesettingEnum.Vertical)
            {
                point.X = GetPageWidth();
                point.Y = Convert.ToInt32(point.X * 1.414);
            }
            else
            {
                point.Y = GetPageWidth();
                point.X = Convert.ToInt32(point.Y * 1.414);
            }
            //给所有子区域的板子设置成第一个版子的值
            //if (manageList.Count > 0 && manageList[0].PackManage != null)
            //{
            //    PackObjBase borderPack = manageList[0].PackManage.ListPob.FirstOrDefault(s => s is BorderPackObj);
            //    foreach (AreaManageBase areaT in manageList)
            //    {
            //        PackObjBase subBorder = areaT.PackManage.ListPob.FirstOrDefault(s => s is BorderPackObj);
            //        if (subBorder != null)
            //        {
            //            point.X = Convert.ToInt32(((BorderPackObj)borderPack).SetWidth);
            //            point.Y = Convert.ToInt32(((BorderPackObj)borderPack).SetHeight);
            //        }
            //    }
            //}
            return point;
        }
        /// 
        /// 清空板上的内容
        /// 
        public void Clear()
        {
            if (zedControl == null) return;
            zedControl.MasterPane.GraphObjList.Clear();
            zedControl.Controls.Clear();
            zedControl.GraphPane.CurveList.Clear();
            Chart chart = zedControl.GraphPane.Chart;
            chart.Rect = new System.Drawing.RectangleF(0f, 0f, 0f, 0f); //设定中间的图像显示区域chart.Rect = {X = 120.0 Y = 304.5 Width = 576.0 Height = 375.55}
            //清除原图像
            if (zedControl.GraphPane.YAxisList.Count > 1)
            {
                //清空除Y轴以外的所有纵坐标轴
                zedControl.GraphPane.YAxisList.RemoveRange(1, zedControl.GraphPane.YAxisList.Count - 1);
            }
            Refresh();
        }
        /// 
        /// 清空界面上的组件,在重新加载界面前做
        /// 
        public void ControlClear()
        {
            foreach (AreaManageBase area in manageList)
            {
                #region 绑定可编辑区域的点击事件
                //绑定所有可编辑区域
                List editPack = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                foreach (PackObjBase pack in editPack)
                {
                    AbleEditPackObj aEdit = pack as AbleEditPackObj;
                    if (aEdit != null)
                    {
                        aEdit.ClearControl();
                        //aEdit.IsVisible = DrawGraphModels.Util.EIsBool.False;
                    }
                }
                #endregion
            }
        }
        /// 
        /// 绑定所有手术记录的值
        /// 
        public void BindOperationRecordValueAll(Object obj)
        {
            //operationRecordProObj = new PropertyObject();
            //operationRecordProObj.Key = "OperationRecord";
            //operationRecordProObj.Description = "手术类";
            foreach (AreaManageBase area in manageList)
            {
                area.IsSelfFresh = false;
            }
            List propertyList = BoardFormUtil.GetPropertyList(obj, this);
            //operationRecordProObj.SubPropertyList = propertyList;
            NotifyPackObj(propertyList);
            foreach (AreaManageBase area in manageList)
            {
                area.IsSelfFresh = true;
            }
            Refresh();
        }
        private void Refresh()
        {
            if (zedControl != null)
            {
                zedControl.AxisChange();
                zedControl.Refresh();
            }
        }
        /// 
        /// 通知组件更新数据
        /// 
        private void NotifyPackObj(List propertyList)
        {
            foreach (PropertyObject proTemp in propertyList)
            {
                NotifyUpdate(proTemp.ViewDesignTag(), proTemp.Text, proTemp.Value);
                if (proTemp.SubPropertyList.Count > 0)
                {
                    NotifyPackObj(proTemp.SubPropertyList);
                }
            }
        }
        /// 
        /// 通知区域绑定更新
        /// 
        /// 区域名称
        /// 模板对象
        public TemplateManage NotificationAreaBindingUpdate(string areaName)
        {
            AreaManageBase area = manageList.FirstOrDefault(s => s.Name == areaName);
            if (area != null)
            {
                area.Bind();
            }
            return this;
        }
        /// 
        /// 设置组件的偏移量
        /// 
        /// 强制返回到0时为真
        public void SetPYL(bool isReturn0 = false)
        {
            if (ZedControl == null)
            {
                Zjpyl = 0;
            }
            else
            {
                //如果是强制把流动条返回到头,就不需要取值了
                if (isReturn0)
                {
                    Zjpyl = 0;
                }
                else
                {
                    Panel panel = ZedControl.Parent as Panel;
                    if (panel != null)
                    {
                        Zjpyl = panel.VerticalScroll.Value;
                    }
                    else
                    {
                        Zjpyl = 0;
                    }
                }
            }
            //根据不同分辨率可能会有自己的配置偏移量,可以单独设置,在AIMS.xml里设置
            int czpyl = 0;
            int hzpyl = 0;
            int dfzpyl = 0;
            try
            {
                czpyl = int.Parse(xmlOpe.GetNode("czpyl")[0].ToString());
                hzpyl = int.Parse(xmlOpe.GetNode("hzpyl")[0].ToString());
                //dfzpyl = int.Parse(xmlOpe.GetNode("dfzpyl")[0].ToString());
            }
            catch (Exception)
            {
            }
            Zjpyl = Zjpyl + LocationY + czpyl;
            Hzjpyl = hzpyl;
            Dfzjpyl = dfzpyl;
        }
        /// 
        /// 组件内容批量清空
        /// 
        public void ClearEdit(bool isFlash = true)
        {
            if (ZedControl == null) return;
            foreach (AreaManageBase manage in ManageList)
            {
                List ables = manage.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                foreach (PackObjBase pack in ables)
                {
                    AbleEditPackObj ableEdit = pack as AbleEditPackObj;
                    if (ableEdit != null)
                    {
                        string dstr = ableEdit.DataSourceName.Replace("_", ".");
                        string value = "";
                        EntityObjectChangeNotifier.SubObjSetValue(manage.OpeRecord, dstr, value);
                        ableEdit.PackText = value;
                        ableEdit.PackValue = value;
                        if (ableEdit.ControlType == EControlType.CheckBox)
                        {
                            foreach (Control conl in ableEdit.CControl.Controls)
                            {
                                CheckBox chk = conl as CheckBox;
                                chk.Checked = false;
                            }
                        }
                    }
                }
            }
            if (isFlash)
            {
                DrawArea();
                ZedControl.AxisChange();
                ZedControl.Refresh();
            }
        }
        /// 
        /// 绑定默认值
        /// 
        public void BindDefaultValue()
        {
            foreach (AreaManageBase manage in ManageList)
            {
                List ables = manage.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList();
                foreach (PackObjBase pack in ables)
                {
                    AbleEditPackObj ableEdit = pack as AbleEditPackObj;
                    if (ableEdit != null && ableEdit.PackValue == "")
                    {
                        if (ableEdit.DefaultSelectValue.Trim() != "")
                        {
                            string[] defalutValues = new string[] { ableEdit.DefaultSelectValue };
                            if (ableEdit.DefaultSelectValue.Trim().Contains(","))
                            {
                                defalutValues = ableEdit.DefaultSelectValue.Split(',');
                            }
                            if (ableEdit.DefaultSelectValue.Trim().Contains(","))
                            {
                                defalutValues = ableEdit.DefaultSelectValue.Split(',');
                            }
                            //ableEdit.PackValue = ableEdit.DefaultSelectValue;
                            foreach (string str in defalutValues)
                            {
                                string dstr = ableEdit.DataSourceName.Replace("_", ".");
                                if (ableEdit.ControlType == EControlType.CheckBox || ableEdit.ControlType == EControlType.RadioButtonList)
                                {
                                    SetObjValue(manage.OpeRecord, dstr, ableEdit.PackText, str);
                                }
                                else
                                {
                                    SetObjValue(manage.OpeRecord, dstr, str, str);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    //排版的枚举
    public enum TypesettingEnum { Horizontal, Vertical }
    //纸张类型
    public enum PageTypeEnum { A4, A3 }
}