Example #1
0
        /// <summary>
        /// 初始化MLookup控件
        /// </summary>
        /// <param name="mlkp">MLookUp控件</param>
        /// <param name="reportno">系统查询配置编号</param>
        public static void InitMLookup(SunriseMLookUp mlkp, string reportno)
        {
            string sSql = "SELECT A.sColumnFieldName, A.sColumnCaption, A.bLkpPopupField, A.sColumnEngCaption, "
                        + "B.sReportSQL, B.sLkpDataField, B.sLkpDataNoField, B.sLkpDisplayField,B.sReportName "
                        + "FROM sysQueryReportDetail A "
                        + "LEFT JOIN sysQueryReportMaster B ON A.MainID=B.ID "
                        + "WHERE B.sReportNo='" + reportno + "' "
                        + "ORDER BY A.iSort";
            DataTable dtTmp = DbHelperSQL.Query(sSql).Tables[0];
            if (dtTmp != null && dtTmp.Rows.Count > 0)
            {
                string SearchFormText = dtTmp.Rows[0]["sReportName"].ToString();
                string SQL = dtTmp.Rows[0]["sReportSQL"].ToString();
                string DataField = dtTmp.Rows[0]["sLkpDataField"].ToString();
                string DisplayField = dtTmp.Rows[0]["sLkpDisplayField"].ToString();
                string DataNoField = dtTmp.Rows[0]["sLkpDataNoField"].ToString();
                string GridDisplayField = string.Empty;
                string GridColumnText=string.Empty;
                string PopupGridDisplayField = string.Empty;
                string PopupGridColumnText = string.Empty;
                for (int i = 0; i < dtTmp.Rows.Count; i++)
                {
                    GridDisplayField += dtTmp.Rows[i]["sColumnFieldName"].ToString() + ",";
                    GridColumnText += (LangCenter.Instance.IsDefaultLanguage ?
                    dtTmp.Rows[i]["sColumnCaption"].ToString() : dtTmp.Rows[i]["sColumnEngCaption"].ToString()) + ",";
                    if (bool.Parse(dtTmp.Rows[i]["bLkpPopupField"].ToString()))
                    {
                        PopupGridDisplayField += dtTmp.Rows[i]["sColumnFieldName"].ToString() + ",";
                        PopupGridColumnText += (LangCenter.Instance.IsDefaultLanguage ?
                        dtTmp.Rows[i]["sColumnCaption"].ToString() : dtTmp.Rows[i]["sColumnEngCaption"].ToString()) + ",";
                    }
                }

                if (string.IsNullOrEmpty(PopupGridColumnText))
                    throw new Exception("MLookUp Popup列不能够为空!");
                GridColumnText = GridColumnText.Remove(GridColumnText.Length - 1, 1);
                GridDisplayField = GridDisplayField.Remove(GridDisplayField.Length - 1, 1);
                PopupGridColumnText = PopupGridColumnText.Remove(PopupGridColumnText.Length - 1, 1);
                PopupGridDisplayField = PopupGridDisplayField.Remove(PopupGridDisplayField.Length - 1, 1);

                SystemPublic.InitMLookUpBase(mlkp, SQL, DataField, DataNoField, DisplayField, GridDisplayField, GridColumnText, PopupGridDisplayField, PopupGridColumnText, SearchFormText);
            }
        }
        private GridColumn CreateGridColumn(GridView gv, DataRow dr, BindingSource ds, string tablename, int index, bool isuseredit)
        {
            //******************************特别提示*********************************************
            //Tip:如果要在Grid中取得自定义添加的控件,例如lkp,cbx,mtxt,btxt,mlkp控件
            //lkp控件:用Controls.Find()方法来查找出lkp控件
            //其他类型:用GridControl.RepositoryItems集合中查找
            //***********************************************************************************
            GridColumn cols = new GridColumn();
            string sControlType = dr["sControlType"].ToString();
            switch (sControlType)
            {
                //LookUp查询
                case "lkp":
                    {
                        if (!string.IsNullOrEmpty(dr["sLookupNo"].ToString()))
                        {
                            SunriseLookUp lkp = new SunriseLookUp();
                            lkp.Name = "collkp" + tablename + dr["sFieldName"].ToString();
                            lkp.DataBindings.Add("EditValue", ds, dr["sFieldName"].ToString());
                            this.pnlMain.Controls.Add(lkp);
                            lkp.SendToBack();
                            Base.InitLookup(lkp, dr["sLookupNo"].ToString());
                            if (!string.IsNullOrEmpty(dr["sLookupAutoSetControl"].ToString()))
                            {
                                string[] sItem = Public.GetSplitString(dr["sLookupAutoSetControl"].ToString(), ",");
                                foreach (var s in sItem)
                                {
                                    string[] ss = Public.GetSplitString(s, "=");
                                    lkp.AutoSetValue(ss[0], ss[1]);
                                }
                            }
                            RepositoryItemButtonEdit btnRepositoryItem = new RepositoryItemButtonEdit();
                            btnRepositoryItem.ButtonClick += lkp.LookUpSelfClick;
                            btnRepositoryItem.TextEditStyle = TextEditStyles.DisableTextEditor;
                            //加这句是让了焦点更新,Grid中才会显示新的数据值,其实在后台是已经存在了的,只是在Grid中没有显示出来
                            //此处设置为查询完成后自动跳转到Grid中的下一列中
                            lkp.LookUpAfterPost += new SunriseLookUp.SunriseLookUpEvent(lkp_LookUpAfterPost);
                            cols.ColumnEdit = btnRepositoryItem;
                            gv.GridControl.RepositoryItems.Add(btnRepositoryItem);
                        }
                        break;
                    }
                //下拉框
                case "cbx":
                    {
                        if (!string.IsNullOrEmpty(dr["sLookupNo"].ToString()))
                        {
                            RepositoryItemImageComboBox cbxRepositoryItem = new RepositoryItemImageComboBox();
                            cbxRepositoryItem.Name = "colcbx" + tablename + dr["sFieldName"].ToString();
                            Base.InitRepositoryItemComboBox(cbxRepositoryItem, dr["sLookupNo"].ToString(), dr["sFieldType"].ToString());
                            cols.ColumnEdit = cbxRepositoryItem;
                            gv.GridControl.RepositoryItems.Add(cbxRepositoryItem);
                        }
                        break;
                    }
                //带按钮的文本框
                case "btxt":
                    {
                        RepositoryItemButtonEdit btxtRepositoryItem = new RepositoryItemButtonEdit();
                        btxtRepositoryItem.Name = "colbtxt" + tablename + dr["sFieldName"].ToString();
                        cols.ColumnEdit = btxtRepositoryItem;
                        gv.GridControl.RepositoryItems.Add(btxtRepositoryItem);
                        break;
                    }
                //多行文本框
                case "mtxt":
                    {
                        RepositoryItemMemoExEdit btxtRepositoryItem = new RepositoryItemMemoExEdit();
                        btxtRepositoryItem.Name = "colmtxt" + tablename + dr["sFieldName"].ToString();
                        cols.ColumnEdit = btxtRepositoryItem;
                        gv.GridControl.RepositoryItems.Add(btxtRepositoryItem);
                        break;
                    }
                case "dett":
                    {
                        RepositoryItemDateEdit dettRespositoryItem = new RepositoryItemDateEdit();
                        dettRespositoryItem.Name = "coldett" + tablename + dr["sFieldName"].ToString();
                        dettRespositoryItem.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
                        dettRespositoryItem.DisplayFormat.FormatString = "g";
                        dettRespositoryItem.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
                        dettRespositoryItem.EditFormat.FormatString = "g";

                        dettRespositoryItem.EditMask = "g";
                        cols.ColumnEdit = dettRespositoryItem;
                        gv.GridControl.RepositoryItems.Add(dettRespositoryItem);
                        break;
                    }
                //MLookUp查询
                case "mlkp":
                    {
                        if (!string.IsNullOrEmpty(dr["sLookupNo"].ToString()))
                        {
                            SunriseMLookUp mlkp = new SunriseMLookUp();
                            mlkp.Name = "colmlkp" + tablename + dr["sFieldName"].ToString();
                            mlkp.DataBindings.Add("EditValue", ds, dr["sFieldName"].ToString());
                            mlkp.IsUsedInGrid = true;

                            Base.InitMLookup(mlkp, dr["sLookupNo"].ToString());
                            if (!string.IsNullOrEmpty(dr["sLookupAutoSetControl"].ToString()))
                            {
                                string[] sItem = Public.GetSplitString(dr["sLookupAutoSetControl"].ToString(), ",");
                                foreach (var s in sItem)
                                {
                                    string[] ss = Public.GetSplitString(s, "=");
                                    mlkp.AutoSetValue(ss[0], ss[1]);
                                }
                            }
                            RepositoryItemPopupContainerEdit btnRepositoryItem = new RepositoryItemPopupContainerEdit();
                            btnRepositoryItem.Name = "gridmlkp" + tablename + dr["sFieldName"].ToString();
                            //原本默认的显示Popup的按钮隐藏掉
                            btnRepositoryItem.Buttons[0].Visible = false;
                            btnRepositoryItem.Buttons.Add(new EditorButton(ButtonPredefines.Ellipsis));
                            btnRepositoryItem.ButtonClick += mlkp.LookUpSelfClick;
                            btnRepositoryItem.TextEditStyle = TextEditStyles.Standard;
                            btnRepositoryItem.Popup += mlkp.mlkpDataNo_Popup;
                            btnRepositoryItem.KeyDown += mlkp.mlkpDataNo_KeyDown;
                            btnRepositoryItem.Closed += mlkp.mlkpDataNo_Closed;
                            gv.GridControl.PreviewKeyDown += mlkp.mlkpDataNo_PreviewKeyDown;

                            btnRepositoryItem.PopupControl = mlkp.mlkpPopup;
                            btnRepositoryItem.EditValueChanged += mlkp.mlkpDataNo_TextChanged;

                            //加这句是让了焦点更新,Grid中才会显示新的数据值,其实在后台是已经存在了的,只是在Grid中没有显示出来
                            //此处设置为查询完成后自动跳转到Grid中的下一列中
                            mlkp.LookUpAfterPost += new SunriseLookUp.SunriseLookUpEvent(lkp_LookUpAfterPost);
                            cols.ColumnEdit = btnRepositoryItem;

                            gv.GridControl.RepositoryItems.Add(btnRepositoryItem);
                            this.pnlMain.Controls.Add(mlkp);
                            mlkp.SendToBack();
                            //pnlDynamic.Controls.Add(mlkp);
                            //mlkp.Visible = false;
                        }
                        break;
                    }
            }
            cols.Caption = LangCenter.Instance.IsDefaultLanguage ? dr["sCaption"].ToString() : dr["sEngCaption"].ToString();
            cols.FieldName = dr["sFieldName"].ToString();
            //Grid 列命名为col+表名+列名
            cols.Name = "col" + tablename + dr["sFieldName"].ToString();
            cols.Width = 120;
            if (dr["sColumnType"].ToString() == "002")
            {
                //检测是否有价格权限
                bool HasPrice = SC.CheckAuth(SecurityOperation.Price, FormID);
                if (!HasPrice) return null;

                //设置价格数据显示格式
                cols.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                cols.DisplayFormat.FormatString = Base.FormatPrice;
            }
            else if (dr["sColumnType"].ToString() == "003")
            {
                //检测是否有数量权限
                bool HasNum = SC.CheckAuth(SecurityOperation.Num, FormID);
                if (!HasNum) return null;

                //设置数量数据显示格式
                cols.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                cols.DisplayFormat.FormatString = Base.FormatQuantity;
            }
            else
                cols.Visible = true;

            //不需要权限控制的价格数量显示格式化
            //无权限控制价格
            if (dr["sColumnType"].ToString() == "004")
            {
                cols.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                cols.DisplayFormat.FormatString = Base.FormatNullAuthPrice;
            }
            //无权限控制数量
            else if (dr["sColumnType"].ToString() == "005")
            {
                cols.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                cols.DisplayFormat.FormatString = Base.FormatNullAuthQuantity;
            }

            cols.VisibleIndex = index;

            //检测窗体字段设置中是否可编辑
            //这里检测的时候是先以窗体设置中的权限优先,窗体上设置不可编辑,用户字段设置可编辑,以窗体上设置为准,不可编辑
            cols.OptionsColumn.AllowEdit = Convert.ToBoolean(dr["bEdit"]);
            //先通过数量和价格权限检测后再设置其用户字段权限
            if (Convert.ToBoolean(dr["bEdit"]))
            {
                cols.OptionsColumn.AllowEdit = isuseredit;
            }

            //Grid Footer显示
            if (dr["sFooterType"].ToString() != "001")
            {
                //001	无
                //002	求和
                //003	计数
                //004	平均值
                //005	最大值
                //006	最小值
                cols.SummaryItem.FieldName = dr["sFieldName"].ToString();
                if (dr["sFooterType"].ToString() == "002")
                    cols.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
                else if (dr["sFooterType"].ToString() == "003")
                    cols.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Count;
                else if (dr["sFooterType"].ToString() == "004")
                    cols.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Average;
                else if (dr["sFooterType"].ToString() == "005")
                    cols.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Max;
                else if (dr["sFooterType"].ToString() == "006")
                    cols.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Min;

                //设置GridFooter汇总格式
                //价格
                if (dr["sColumnType"].ToString() == "002")
                    cols.SummaryItem.DisplayFormat = Base.FormatPrice;
                //数量
                else if (dr["sColumnType"].ToString() == "003")
                    cols.SummaryItem.DisplayFormat = Base.FormatQuantity;
                //无权限控制价格
                else if (dr["sColumnType"].ToString() == "004")
                    cols.SummaryItem.DisplayFormat = Base.FormatNullAuthPrice;
                //无权限控制数量
                else if (dr["sColumnType"].ToString() == "005")
                    cols.SummaryItem.DisplayFormat = Base.FormatNullAuthQuantity;

                gv.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, dr["sFieldName"].ToString(), cols);
            }

            //设置非空字段颜色
            if (Convert.ToBoolean(dr["bSaveData"]) && Convert.ToBoolean(dr["bNotNull"]))
            {
                cols.AppearanceHeader.ForeColor = Color.FromName(Base.GetSystemParamter("001"));
                cols.AppearanceHeader.Options.UseForeColor = true;
            }

            return cols;
        }
Example #3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="gv"></param>
        /// <param name="dr"></param>
        /// <param name="tableName"></param>
        /// <param name="index"></param>
        /// <param name="isuseredit"></param>
        /// <param name="formID"></param>
        /// <returns></returns>
        public static GridColumn GridCreateColumn(Form frm, GridView gv, DataRow drConfig, string tableName, int index, bool allowEdit, int formID, object lpkBindSource, SunriseLookUp.SunriseLookUpEvent slookHandler)
        {
            GridColumn gc = new GridColumn();
            string sControlType = drConfig["sControlType"].ToString();
            string sFieldName = drConfig["sFieldName"].ToString();
            string sLookupNo = drConfig["sLookupNo"].ToString();
            string sColumnType = drConfig["sColumnType"].ToString();
            #region 设置ColumnEdit
            switch (sControlType)
            {
                case "lkp":
                    #region LookUp查询
                    if (!string.IsNullOrEmpty(sLookupNo) && lpkBindSource != null)
                    {
                        SunriseLookUp lkp = new SunriseLookUp();
                        lkp.Name = string.Format("collkp{0}{1}", tableName, sFieldName);
                        lkp.DataBindings.Add("EditValue", lpkBindSource, sFieldName);
                        Base.InitLookup(lkp, sLookupNo);
                        string sLookupAutoSetControl = drConfig["sLookupAutoSetControl"].ToString();
                        if (!string.IsNullOrEmpty(sLookupAutoSetControl))
                        {
                            string[] sItem = Public.GetSplitString(sLookupAutoSetControl, ",");
                            foreach (var s in sItem)
                            {
                                string[] ss = Public.GetSplitString(s, "=");
                                lkp.AutoSetValue(ss[0], ss[1]);
                            }
                        }
                        RepositoryItemButtonEdit btnRepositoryItem = new RepositoryItemButtonEdit();
                        btnRepositoryItem.ButtonClick += lkp.LookUpSelfClick;
                        btnRepositoryItem.TextEditStyle = TextEditStyles.DisableTextEditor;
                        //加这句是让了焦点更新,Grid中才会显示新的数据值,其实在后台是已经存在了的,只是在Grid中没有显示出来
                        //此处设置为查询完成后自动跳转到Grid中的下一列中
                        if (slookHandler != null) lkp.LookUpAfterPost += slookHandler;
                        //if (slookHandler != null) lkp.LookUpAfterPost += new SunriseLookUp.SunriseLookUpEvent(lkp_LookUpAfterPost);
                        gc.ColumnEdit = btnRepositoryItem;
                        gv.GridControl.RepositoryItems.Add(btnRepositoryItem);
                    }
                    break;
                    #endregion
                case "cbx":
                    #region 下拉框
                    if (!string.IsNullOrEmpty(sLookupNo))
                    {
                        RepositoryItemImageComboBox cbxRepositoryItem = new RepositoryItemImageComboBox();
                        Base.InitRepositoryItemComboBox(cbxRepositoryItem, sLookupNo, (string)drConfig["sFieldType"]);
                        gc.ColumnEdit = cbxRepositoryItem;
                        gv.GridControl.RepositoryItems.Add(cbxRepositoryItem);
                    }
                    break;
                    #endregion
                case "btxt":
                    #region 带按钮的文本框
                    RepositoryItemMemoExEdit btxtRepositoryItem = new RepositoryItemMemoExEdit();
                    gc.ColumnEdit = btxtRepositoryItem;
                    gv.GridControl.RepositoryItems.Add(btxtRepositoryItem);
                    break;
                    #endregion
                //modify by han
                #region
                //多行文本框
                case "mtxt":

                    RepositoryItemMemoExEdit mtxtRepositoryItem = new RepositoryItemMemoExEdit();
                    mtxtRepositoryItem.Name = "colmtxt" + tableName + drConfig["sFieldName"].ToString();
                    gc.ColumnEdit = mtxtRepositoryItem;
                    gv.GridControl.RepositoryItems.Add(mtxtRepositoryItem);
                    break;
                case "dett":
                    RepositoryItemDateEdit dettRespositoryItem = new RepositoryItemDateEdit();
                    dettRespositoryItem.Name = "coldett" + tableName + drConfig["sFieldName"].ToString();
                    dettRespositoryItem.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
                    dettRespositoryItem.DisplayFormat.FormatString = "g";
                    dettRespositoryItem.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
                    dettRespositoryItem.EditFormat.FormatString = "g";

                    dettRespositoryItem.EditMask = "g";
                    gc.ColumnEdit = dettRespositoryItem;
                    gv.GridControl.RepositoryItems.Add(dettRespositoryItem);
                    break;
                //MLookUp查询
                case "mlkp":
                    {
                        if (!string.IsNullOrEmpty(drConfig["sLookupNo"].ToString()))
                        {
                            SunriseMLookUp mlkp = new SunriseMLookUp();
                            mlkp.Name = "colmlkp" + tableName + drConfig["sFieldName"].ToString();
                            mlkp.DataBindings.Add("EditValue", lpkBindSource, drConfig["sFieldName"].ToString());
                            mlkp.IsUsedInGrid = true;

                            Base.InitMLookup(mlkp, drConfig["sLookupNo"].ToString());
                            if (!string.IsNullOrEmpty(drConfig["sLookupAutoSetControl"].ToString()))
                            {
                                string[] sItem = Public.GetSplitString(drConfig["sLookupAutoSetControl"].ToString(), ",");
                                foreach (var s in sItem)
                                {
                                    string[] ss = Public.GetSplitString(s, "=");
                                    mlkp.AutoSetValue(ss[0], ss[1]);
                                }
                            }
                            RepositoryItemPopupContainerEdit btnRepositoryItem = new RepositoryItemPopupContainerEdit();
                            btnRepositoryItem.Name = "gridmlkp" + tableName + drConfig["sFieldName"].ToString();
                            //原本默认的显示Popup的按钮隐藏掉
                            btnRepositoryItem.Buttons[0].Visible = false;
                            btnRepositoryItem.Buttons.Add(new EditorButton(ButtonPredefines.Ellipsis));
                            btnRepositoryItem.ButtonClick += mlkp.LookUpSelfClick;
                            btnRepositoryItem.TextEditStyle = TextEditStyles.Standard;
                            btnRepositoryItem.Popup += mlkp.mlkpDataNo_Popup;
                            btnRepositoryItem.KeyDown += mlkp.mlkpDataNo_KeyDown;
                            btnRepositoryItem.Closed += mlkp.mlkpDataNo_Closed;
                            gv.GridControl.PreviewKeyDown += mlkp.mlkpDataNo_PreviewKeyDown;

                            btnRepositoryItem.PopupControl = mlkp.mlkpPopup;
                            btnRepositoryItem.EditValueChanged += mlkp.mlkpDataNo_TextChanged;

                            //加这句是让了焦点更新,Grid中才会显示新的数据值,其实在后台是已经存在了的,只是在Grid中没有显示出来
                            //此处设置为查询完成后自动跳转到Grid中的下一列中
                            // mlkp.LookUpAfterPost += new SunriseLookUp.SunriseLookUpEvent(lkp_LookUpAfterPost);
                            mlkp.LookUpAfterPost += slookHandler;

                            gc.ColumnEdit = btnRepositoryItem;
                            gv.GridControl.RepositoryItems.Add(btnRepositoryItem);
                            frm.Controls.Add(mlkp);
                            mlkp.Location = new Point(frm.Size.Height / 2, frm.Size.Width / 2);
                            mlkp.SendToBack();
                        }
                        break;
                    }
                #endregion
            }
            #endregion
            gc.Caption = LangCenter.Instance.IsDefaultLanguage ? drConfig["sCaption"].ToString() : drConfig["sEngCaption"].ToString();
            gc.FieldName = sFieldName;
            gc.Name = string.Format("col{0}{1}", tableName, sFieldName);//Grid 列命名为col+表名+列名
            gc.Width = 120;
            if (sColumnType == "002" && !SC.CheckAuth(SecurityOperation.Price, formID)) return null;//检测是否有价格权限
            if (sColumnType == "003" && !SC.CheckAuth(SecurityOperation.Num, formID)) return null;//检测是否有数量权限
            gc.Visible = true;
            gc.VisibleIndex = index;
            #region 检测窗体字段设置中是否可编辑
            //这里检测的时候是先以窗体设置中的权限优先,窗体上设置不可编辑,用户字段设置可编辑,以窗体上设置为准,不可编辑
            bool bEdit = Convert.ToBoolean(drConfig["bEdit"]);
            //先通过数量和价格权限检测后再设置其用户字段权限
            if (bEdit) bEdit = allowEdit;
            gc.OptionsColumn.AllowEdit = bEdit;
            #endregion
            #region Grid Footer显示
            string sFooterType = (string)drConfig["sFooterType"];
            gc.SummaryItem.FieldName = sFieldName;
            DevExpress.Data.SummaryItemType sitype = DevExpress.Data.SummaryItemType.None;
            if (sFooterType == "001") sitype = DevExpress.Data.SummaryItemType.None;  //001	无
            if (sFooterType == "002") sitype = DevExpress.Data.SummaryItemType.Sum;//002	求和
            if (sFooterType == "003") sitype = DevExpress.Data.SummaryItemType.Count;//003	计数
            if (sFooterType == "004") sitype = DevExpress.Data.SummaryItemType.Average;//004	平均值
            if (sFooterType == "005") sitype = DevExpress.Data.SummaryItemType.Max;//005	最大值
            if (sFooterType == "006") sitype = DevExpress.Data.SummaryItemType.Min;//006	最小值
            gc.SummaryItem.SummaryType = sitype;
            if (sitype != DevExpress.Data.SummaryItemType.None) gv.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, sFieldName, gc);
            #endregion

            //modify by han
            //设置非空字段颜色
            if (Convert.ToBoolean(drConfig["bSaveData"]) && Convert.ToBoolean(drConfig["bNotNull"]))
            {
                gc.AppearanceHeader.ForeColor = Color.FromName(Base.GetSystemParamter("001"));
                gc.AppearanceHeader.Options.UseForeColor = true;
            }

            return gc;
        }
Example #4
0
 /// <summary>
 /// 初始化MLookUp控件
 /// </summary>
 /// <param name="lkp">LookUp控件</param>
 /// <param name="sql">查询SQL</param>
 /// <param name="returnfield">返回字段</param>
 /// <param name="displayfield">显示字段</param>
 /// <param name="columnfield">查询窗口Grid显示列</param>
 /// <param name="columntetx">查询窗口Grid列显示名称</param>
 /// <param name="text">查询窗体标题</param>
 public static void InitMLookUpBase(SunriseMLookUp lkp, string sql, string returnfield, string lkpnofield, string displayfield, string columnfield, string columntetx, string popupcolumnfield, string popupcolumntetx, string text)
 {
     lkp.SearchFormText = text;
     lkp.SQL = sql;
     lkp.DataField = returnfield;
     lkp.DataNoField = lkpnofield;
     lkp.DisplayField = displayfield;
     lkp.GridDisplayField = columnfield;
     lkp.GridColumnText = columntetx;
     lkp.PopupDataFields = popupcolumnfield;
     lkp.PopupDisplayFields = popupcolumntetx;
 }
        /// <summary>
        /// 创建自定义控件
        /// </summary>
        public void CreateDynamicControl()
        {
            if (DynamicMasterTableData.Select("bSystemColumn=0").Length > 0)
            {
                pnlDynamic.Visible = true;

                //每行控件数
                int iControlColumn = Convert.ToInt32(DynamicMasterTableData.Rows[0]["iControlColumn"]);
                //控件间距
                int iControlSpace = Convert.ToInt32(DynamicMasterTableData.Rows[0]["iControlSpace"]);
                //先计算需要生成控件的数据,去除如果在自定义字段权限设置中设置为不可见的数据
                List<DataRow> drs = DynamicMasterTableData.Select("bSystemColumn=0 AND bShowInPanel=1").ToList();

                if (!SecurityCenter.IsAdmin && FormFieldSetting.Rows.Count > 0)
                {
                    for (int i = 0; i < drs.Count; i++)
                    {
                        //取只有是主表/单表的数据
                        foreach (DataRow drField in FormFieldSetting.Select("sTableName='" + MasterTableName + "'"))
                        {
                            if (drs[i]["sFieldName"].ToString() == drField["sFieldName"].ToString() &&
                                !Convert.ToBoolean(drField["bVisiable"]))
                            {
                                drs.Remove(drs[i]);
                            }
                        }
                    }
                }

                //计算控件总共行数
                int iRows = 0;
                if (drs.Count > 0)
                {
                    if (drs.Count % iControlColumn != 0)
                    {
                        iRows = (int)Math.Floor(Convert.ToDecimal(drs.Count / iControlColumn)) + 1;
                    }
                    else
                    {
                        iRows = Convert.ToInt32(drs.Count / iControlColumn);
                    }
                    //设置控件数计数
                    int iControl = 0;
                    for (int j = 0; j < iRows; j++)
                    {
                        for (int i = 0; i < iControlColumn; i++)
                        {
                            //控件类型
                            string sControlType = drs[iControl]["sControlType"].ToString();
                            //创建控件
                            //Lable大小控制为80X21,其他输入控件大小为120X21
                            Label lblControl = new Label();
                            lblControl.AutoSize = false;
                            lblControl.Size = new Size(80, 21);
                            lblControl.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i, ControlY + (21 + 10) * j);
                            //控件命名规则:lbl+字段名
                            lblControl.Name = "lbl" + drs[iControl]["sFieldName"].ToString();
                            lblControl.TextAlign = ContentAlignment.BottomLeft;
                            //当控件类型为复选框\单选\Label标签时不创建Lable控件
                            if (sControlType != "chk" && sControlType != "rad" && sControlType != "lbl")
                            {
                                lblControl.Text = LangCenter.Instance.IsDefaultLanguage ? drs[iControl]["sCaption"].ToString() : drs[iControl]["sCaption"].ToString();
                            }
                            else
                                lblControl.Visible = false;
                            pnlDynamic.Controls.Add(lblControl);
                            switch (sControlType)
                            {
                                case "txt":
                                    {
                                        TextEdit txt = new TextEdit();
                                        txt.Size = new Size(120, 21);
                                        txt.Name = "txt" + drs[iControl]["sFieldName"].ToString();
                                        txt.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        pnlDynamic.Controls.Add(txt);
                                        break;
                                    }
                                case "mtxt":
                                    {
                                        MemoEdit mtxt = new MemoEdit();
                                        mtxt.Size = new Size(120, 21);
                                        mtxt.Name = "mtxt" + drs[iControl]["sFieldName"].ToString();
                                        mtxt.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        pnlDynamic.Controls.Add(mtxt);
                                        break;
                                    }
                                case "btxt":
                                    {
                                        MemoExEdit btxt = new MemoExEdit();
                                        btxt.Size = new Size(120, 21);
                                        btxt.Name = "btxt" + drs[iControl]["sFieldName"].ToString();
                                        btxt.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        pnlDynamic.Controls.Add(btxt);
                                        break;
                                    }
                                case "cbx":
                                    {
                                        ImageComboBoxEdit cbx = new ImageComboBoxEdit();
                                        cbx.Size = new Size(120, 21);
                                        cbx.Name = "cbx" + drs[iControl]["sFieldName"].ToString();
                                        cbx.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        pnlDynamic.Controls.Add(cbx);
                                        break;
                                    }
                                case "chk":
                                    {
                                        CheckEdit chk = new CheckEdit();
                                        chk.Size = new Size(120, 21);
                                        chk.Name = "chk" + drs[iControl]["sFieldName"].ToString();
                                        chk.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        chk.CheckState = CheckState.Unchecked;
                                        chk.Text = LangCenter.Instance.IsDefaultLanguage ? drs[iControl]["sCaption"].ToString() : drs[iControl]["sEngCaption"].ToString();
                                        pnlDynamic.Controls.Add(chk);
                                        break;
                                    }
                                case "det":
                                    {
                                        DateEdit det = new DateEdit();
                                        det.Size = new Size(120, 21);
                                        det.Name = "det" + drs[iControl]["sFieldName"].ToString();
                                        det.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        det.EditValue = null;
                                        pnlDynamic.Controls.Add(det);
                                        break;
                                    }
                                case "dett":
                                    {
                                        DateEdit dett = new DateEdit();
                                        dett.Size = new Size(120, 21);
                                        dett.Name = "dett" + drs[iControl]["sFieldName"].ToString();
                                        dett.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        dett.EditValue = null;
                                        dett.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
                                        dett.Properties.DisplayFormat.FormatString = "g";
                                        dett.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
                                        dett.Properties.EditFormat.FormatString = "g";
                                        dett.Properties.EditMask = "g";
                                        pnlDynamic.Controls.Add(dett);
                                        break;
                                    }
                                case "img":
                                    {
                                        ImageEdit img = new ImageEdit();
                                        img.Size = new Size(120, 21);
                                        img.Name = "img" + drs[iControl]["sFieldName"].ToString();
                                        img.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        pnlDynamic.Controls.Add(img);
                                        break;
                                    }
                                case "lbl":
                                    {
                                        LabelControl lbl = new LabelControl();
                                        lbl.Size = new Size(120, 21);
                                        lbl.Name = "lbl" + drs[iControl]["sFieldName"].ToString() + iControl.ToString();
                                        lbl.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        lbl.Text = LangCenter.Instance.IsDefaultLanguage ? drs[iControl]["sCaption"].ToString() : drs[iControl]["sEngCaption"].ToString();
                                        pnlDynamic.Controls.Add(lbl);
                                        break;
                                    }
                                case "lkp":
                                    {
                                        SunriseLookUp lkp = new SunriseLookUp();
                                        lkp.Size = new Size(120, 21);
                                        lkp.Name = "lkp" + drs[iControl]["sFieldName"].ToString();
                                        lkp.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        pnlDynamic.Controls.Add(lkp);
                                        break;
                                    }
                                case "mlkp":
                                    {
                                        SunriseMLookUp mlkp = new SunriseMLookUp();
                                        mlkp.Size = new Size(120, 21);
                                        mlkp.Name = "mlkp" + drs[iControl]["sFieldName"].ToString();
                                        mlkp.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        pnlDynamic.Controls.Add(mlkp);
                                        break;
                                    }
                                case "rad":
                                    {
                                        RadioGroup rad = new RadioGroup();
                                        rad.Size = new Size(120, 21);
                                        rad.Name = "rad" + drs[iControl]["sFieldName"].ToString();
                                        rad.Location = new Point(ControlX + (80 + 120 + iControlSpace) * i + 80, ControlY + 4 + (21 + 10) * j);
                                        pnlDynamic.Controls.Add(rad);
                                        break;
                                    }
                            }
                            iControl++;
                            //当计数大于等于要创建的控件数量时则退出循环
                            if (iControl >= drs.Count)
                                break;
                        }
                    }
                }
                pnlDynamic.Height = ControlY + iRows * 31;
            }
            //初始化数据绑定
            InitDataBindings();
        }