Dev中GridView、RepositoryItemGridLookUpEdit、LookUpEdit等扩展方法

转自:https://blog.csdn.net/u011695973/article/details/90399468?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-8-90399468-blog-98946477.235^v36^pc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-8-90399468-blog-98946477.235^v36^pc_relevant_default_base3&utm_relevant_index=9

点击查看代码
 
    /// <summary>
    /// GridView列属性设置类
    /// </summary>
    public class BaseColumnSet
    {
        /// <summary>
        /// 列名(可不设置)
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 绑定字段
        /// </summary>
        public string FieldName { get; set; }
        /// <summary>
        /// 列名(显示)
        /// </summary>
        public string Caption { get; set; }
        /// <summary>
        /// 列宽(默认100)
        /// </summary>
        public int Width { get; set; } = 100;
        /// <summary>
        /// 是否显示(默认显示)
        /// </summary>
        public bool Visible { get; set; } = true;
        /// <summary>
        /// 显示位置(默认按照列表添加顺序)
        /// </summary>
        public int? VisibleIndex { get; set; }
        /// <summary>
        /// 设置列是否可编辑(默认可编辑)
        /// </summary>
        public bool AllowEdit { get; set; } = true;
        /// <summary>
        /// 格式化类型
        /// </summary>
        public FormatType formatType { get; set; } = FormatType.None;
        /// <summary>
        /// 格式化类型名称 
        /// </summary>
        public string FormatString { get; set; }
        /// <summary>
        /// 分组
        /// </summary>
        public int GroupIndex { get; set; } = -1;
        /// <summary>
        /// 排序
        /// </summary>
        public ColumnSortOrder sortOrder { get; set; } = ColumnSortOrder.None;
        /// <summary>
        /// 设置可编辑列
        /// 例:RepositoryItemCheckEdit RepositoryItemImageEdit RepositoryItemGridLookUpEdit RepositoryItemComboBox
        /// </summary>
        public RepositoryItem ColumnEdit { get; set; }
 
        /// <summary>
        /// 设置列内容是否可合并
        /// </summary>
        public DefaultBoolean AllowMerge { get; set; } = DefaultBoolean.Default;
    }
点击查看代码
 
    /// <summary>
    /// 控件设置公共类
    /// </summary>
    public static class CtrlSetCommon
    {
        /// <summary>
        /// 设置GridView显示列属性
        /// </summary>
        /// <param name="gv">GridView</param>
        /// <param name="list">列属性集合</param>
        /// <param name="indicatorShow">显示行号:默认True</param>
        public static void SetColumns(this GridView gv, List<BaseColumnSet> list, bool indicatorShow = true, int indicatorWidth = 30)
        {
            string fieldName = string.Empty;
            for (int i = 0; i < list.Count; i++)
            {
                fieldName = list[i].FieldName;
                gv.Columns.AddField(fieldName);
 
                if (!string.IsNullOrWhiteSpace(list[i].Name))
                    gv.Columns[fieldName].Name = list[i].Name;
 
                gv.Columns[fieldName].Caption = list[i].Caption;
                gv.Columns[fieldName].Width = list[i].Width;
                gv.Columns[fieldName].VisibleIndex = list[i].VisibleIndex ?? i;
                gv.Columns[fieldName].Visible = list[i].Visible;
                gv.Columns[fieldName].OptionsColumn.AllowEdit = list[i].AllowEdit;
 
                if (list[i].formatType != FormatType.None)
                {
                    gv.Columns[fieldName].DisplayFormat.FormatType = list[i].formatType;
                    gv.Columns[fieldName].DisplayFormat.FormatString = list[i].FormatString;
                }
 
                gv.Columns[fieldName].GroupIndex = list[i].GroupIndex;
                gv.Columns[fieldName].SortOrder = list[i].sortOrder;
 
                if (list[i].ColumnEdit != null)
                    gv.Columns[fieldName].ColumnEdit = list[i].ColumnEdit;//可编辑列
 
                if (list[i].AllowMerge != DefaultBoolean.Default)
                    gv.Columns[fieldName].OptionsColumn.AllowMerge = list[i].AllowMerge;//设置合并列
                else
                    gv.Columns[fieldName].OptionsColumn.AllowMerge = DefaultBoolean.False;//设置合并列
            }
 
            if (indicatorShow)
            {
                gv.IndicatorWidth = indicatorWidth;
 
                gv.CustomDrawRowIndicator += Gv_CustomDrawRowIndicator;
            }
        }
 
        /// <summary>
        /// 显示行号
        /// </summary>
        private static void Gv_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
        {
            if (e.Info.IsRowIndicator && e.RowHandle >= 0)
            {
                e.Info.DisplayText = (e.RowHandle + 1).ToString().PadLeft(3, ' ');
            }
        }
 
        #region RepositoryItemGridLookUpEdit
 
        //private static System.Windows.Forms.UserControl userCtrl = null;
        //private static List<string> strList = null;
 
        /// <summary>
        /// 行内编辑(弹出RepositoryItemGridLookUpEdit)
        /// 设置GridView显示列属性
        /// </summary>
        /// <param name="gridLookUpEdit">行内编辑弹出控件</param>
        /// <param name="list">列属性集合</param>
        /// <param name="dt">数据源</param>
        /// <param name="valueMember">绑定值成员</param>
        /// <param name="displayMember">绑定显示成员</param>
        /// <param name="nullText">空值显示:默认为空字符串</param>
        public static void SetColumns(this RepositoryItemGridLookUpEdit gridLookUpEdit, List<BaseColumnSet> list, DataTable dt = null, string valueMember = "", string displayMember = "", string nullText = "")
        {
            GridView gv = gridLookUpEdit.View;//获取当前控件的GridView
            //DevExpress.XtraGrid.GridControl gridCtrl = gridLookUpEdit.View.GridControl;
 
            string fieldName = string.Empty;
            for (int i = 0; i < list.Count; i++)
            {
                fieldName = list[i].FieldName;
                gv.Columns.AddField(fieldName);
 
                if (!string.IsNullOrWhiteSpace(list[i].Name))
                    gv.Columns[fieldName].Name = list[i].Name;
 
                gv.Columns[fieldName].Caption = list[i].Caption;
                gv.Columns[fieldName].Width = list[i].Width;
                gv.Columns[fieldName].VisibleIndex = list[i].VisibleIndex ?? i;
                gv.Columns[fieldName].Visible = list[i].Visible;
                gv.Columns[fieldName].OptionsColumn.AllowEdit = list[i].AllowEdit;
 
                if (list[i].formatType != FormatType.None)
                {
                    gv.Columns[fieldName].DisplayFormat.FormatType = list[i].formatType;
                    gv.Columns[fieldName].DisplayFormat.FormatString = list[i].FormatString;
                }
 
                gv.Columns[fieldName].GroupIndex = list[i].GroupIndex;
                gv.Columns[fieldName].SortOrder = list[i].sortOrder;
 
                if (list[i].ColumnEdit != null)
                    gv.Columns[fieldName].ColumnEdit = list[i].ColumnEdit;//可编辑列
 
                if (list[i].AllowMerge != DefaultBoolean.Default)
                    gv.Columns[fieldName].OptionsColumn.AllowMerge = list[i].AllowMerge;//设置合并列
                else
                    gv.Columns[fieldName].OptionsColumn.AllowMerge = DefaultBoolean.False;//设置合并列
            }
 
            gridLookUpEdit.ValueMember = valueMember;//设置值成员
            gridLookUpEdit.DisplayMember = displayMember;//设置显示成员
            gridLookUpEdit.NullText = nullText;//设置空值显示
            gridLookUpEdit.DataSource = dt;//设置数据源
        }
 
        /// <summary>
        /// 设置匹配的列
        /// </summary>
        /// <param name="sender">sender</param>
        /// <param name="strList">Filter列名</param>
        public static void FilterLookup(object sender, List<string> strList)
        {
            //Text += " ! ";
            GridLookUpEdit edit = sender as GridLookUpEdit;
            GridView gridView = edit.Properties.View as GridView;
            FieldInfo fi = gridView.GetType().GetField("extraFilter", BindingFlags.NonPublic | BindingFlags.Instance);
            //Text = edit.AutoSearchText;
 
            List<BinaryOperator> operators = new List<BinaryOperator>();
            foreach (string strColumnName in strList)
            {
                operators.Add(new BinaryOperator(strColumnName, "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like));
            }
            string filterCondition = new GroupOperator(GroupOperatorType.Or, operators.ToArray()).ToString();
            fi.SetValue(gridView, filterCondition);
 
            MethodInfo mi = gridView.GetType().GetMethod("ApplyColumnsFilterEx", BindingFlags.NonPublic | BindingFlags.Instance);
            mi.Invoke(gridView, null);
        }
 
        /// <summary>
        /// 设置匹配的列
        /// </summary>
        /// <param name="lookupEditYPDM">RepositoryItemGridLookUpEdit控件</param>
        /// <param name="list">Filter列名</param>
        /// <param name="searchText">当前输入值</param>
        public static void FilterLookup(RepositoryItemGridLookUpEdit lookupEditYPDM, List<string> list, string searchText)
        {
            //GridLookUpEdit edit = sender as GridLookUpEdit;
            GridView gridView = lookupEditYPDM.View as GridView;
            FieldInfo fi = gridView.GetType().GetField("extraFilter", BindingFlags.NonPublic | BindingFlags.Instance);
 
            List<BinaryOperator> operators = new List<BinaryOperator>();
            foreach (string strColumnName in list)
            {
                operators.Add(new BinaryOperator(strColumnName, "%" + searchText + "%", BinaryOperatorType.Like));
            }
            string filterCondition = new GroupOperator(GroupOperatorType.Or, operators.ToArray()).ToString();
            fi.SetValue(gridView, filterCondition);
 
            MethodInfo mi = gridView.GetType().GetMethod("ApplyColumnsFilterEx", BindingFlags.NonPublic | BindingFlags.Instance);
            mi.Invoke(gridView, null);
        }
        
        #endregion
 
        /// <summary>
        /// 行内编辑(弹出RepositoryItemSearchLookUpEdit)
        /// 设置GridView显示列属性
        /// </summary>
        /// <param name="searchLookUpEdit">行内编辑弹出控件</param>
        /// <param name="list">列属性集合</param>
        /// <param name="dt">数据源</param>
        /// <param name="valueMember">绑定值成员</param>
        /// <param name="displayMember">绑定显示成员</param>
        /// <param name="nullText">空值显示:默认为空字符串</param>
        public static void SetColumns(this RepositoryItemSearchLookUpEdit searchLookUpEdit, List<BaseColumnSet> list, DataTable dt = null, string valueMember = "", string displayMember = "", string nullText = "")
        {
            GridView gv = searchLookUpEdit.View;//获取当前控件的GridView
 
            string fieldName = string.Empty;
            for (int i = 0; i < list.Count; i++)
            {
                fieldName = list[i].FieldName;
                gv.Columns.AddField(fieldName);
 
                if (!string.IsNullOrWhiteSpace(list[i].Name))
                    gv.Columns[fieldName].Name = list[i].Name;
 
                gv.Columns[fieldName].Caption = list[i].Caption;
                gv.Columns[fieldName].Width = list[i].Width;
                gv.Columns[fieldName].VisibleIndex = list[i].VisibleIndex ?? i;
                gv.Columns[fieldName].Visible = list[i].Visible;
                gv.Columns[fieldName].OptionsColumn.AllowEdit = list[i].AllowEdit;
 
                if (list[i].formatType != FormatType.None)
                {
                    gv.Columns[fieldName].DisplayFormat.FormatType = list[i].formatType;
                    gv.Columns[fieldName].DisplayFormat.FormatString = list[i].FormatString;
                }
 
                gv.Columns[fieldName].GroupIndex = list[i].GroupIndex;
                gv.Columns[fieldName].SortOrder = list[i].sortOrder;
 
                if (list[i].ColumnEdit != null)
                    gv.Columns[fieldName].ColumnEdit = list[i].ColumnEdit;//可编辑列
 
                if (list[i].AllowMerge != DefaultBoolean.Default)
                    gv.Columns[fieldName].OptionsColumn.AllowMerge = list[i].AllowMerge;//设置合并列
                else
                    gv.Columns[fieldName].OptionsColumn.AllowMerge = DefaultBoolean.False;//设置合并列
            }
 
            searchLookUpEdit.ValueMember = valueMember;//设置值成员
            searchLookUpEdit.DisplayMember = displayMember;//设置显示成员
            searchLookUpEdit.NullText = nullText;//设置空值显示
            searchLookUpEdit.DataSource = dt;//设置数据源
        }
 
        /// <summary>
        /// LookUpEdit扩展方法
        /// 设置LookUpEdit数据源、ValueMember、DiaplayMember
        /// </summary>
        /// <param name="cmb">LookUpEdit控件</param>
        /// <param name="dt">数据源</param>
        /// <param name="valueMember">绑定值成员</param>
        /// <param name="displayMember">绑定显示成员</param>
        public static void LookUpEditExtend(this LookUpEdit cmb, DataTable dt, string valueMember, string displayMember, int widthPopup = 100, int heightPopup = 150, bool showHeader = false, bool showFooter = false)
        {
            cmb.Properties.ValueMember = valueMember;
            cmb.Properties.DisplayMember = displayMember;
            cmb.Properties.DataSource = dt;
 
            cmb.Properties.PopupSizeable = true;
            cmb.Properties.PopupFormMinSize = new Size(widthPopup, heightPopup);
            cmb.Properties.ShowHeader = showHeader;
            cmb.Properties.ShowFooter = showFooter;
        }
 
        /// <summary>
        /// 设置LookUpEdit显示列属性
        /// </summary>
        /// <param name="lookupEdit">LookUpEdit</param>
        /// <param name="list">列属性集合</param>
        public static void SetColumns(this LookUpEdit lookupEdit, List<BaseColumnSet> list)
        {
            //string fieldName = string.Empty;
            for (int i = 0; i < list.Count; i++)
            {
                //fieldName = list[i].FieldName;
 
                DevExpress.XtraEditors.Controls.LookUpColumnInfo lookUpColumn = new DevExpress.XtraEditors.Controls.LookUpColumnInfo()
                {
                    FieldName = list[i].FieldName,
                    Caption = list[i].Caption,
                    Width = list[i].Width,
                    Visible = list[i].Visible,
                    SortOrder = list[i].sortOrder
                };
                if (list[i].formatType != FormatType.None)
                {
                    lookUpColumn.FormatType = list[i].formatType;
                    lookUpColumn.FormatString = list[i].FormatString;
                }
 
                lookupEdit.Properties.Columns.Add(lookUpColumn);
            }
        }
 
        /// <summary>
        /// 设置GridLookUpEdit显示列属性
        /// </summary>
        /// <param name="lookupEdit">LookUpEdit</param>
        /// <param name="list">列属性集合</param>
        public static void SetColumns(this GridLookUpEdit lookupEdit, List<BaseColumnSet> list)
        {
            for (int i = 0; i < list.Count; i++)
            {
                DevExpress.XtraGrid.Columns.GridColumn lookUpColumn = new DevExpress.XtraGrid.Columns.GridColumn()
                {
                    FieldName = list[i].FieldName,
                    Caption = list[i].Caption,
                    Width = list[i].Width,
                    Visible = list[i].Visible,
                    SortOrder = list[i].sortOrder
                };
 
                lookupEdit.Properties.View.Columns.Add(lookUpColumn);
            }
        }
 
        /// <summary>
        /// GridLookUpEdit扩展方法
        /// 设置GridLookUpEdit数据源、ValueMember、DiaplayMember
        /// </summary>
        /// <param name="cmb">LookUpEdit控件</param>
        /// <param name="dt">数据源</param>
        /// <param name="valueMember">绑定值成员</param>
        /// <param name="displayMember">绑定显示成员</param>
        public static void LookUpEditExtend(this GridLookUpEdit cmb, DataTable dt, string valueMember, string displayMember, int widthPopup = 110, int heightPopup = 150, bool showFooter = false)
        {
            cmb.Properties.ValueMember = valueMember;
            cmb.Properties.DisplayMember = displayMember;
            cmb.Properties.DataSource = dt;
 
            cmb.Properties.PopupSizeable = true;
            cmb.Properties.PopupFormMinSize = new Size(widthPopup, heightPopup);
            cmb.Properties.PopupFormSize = new Size(widthPopup, heightPopup);
            cmb.Properties.ShowFooter = showFooter;
            
            cmb.Properties.NullValuePrompt = "请选择";
            cmb.Properties.NullValuePromptShowForEmptyValue = true;
            cmb.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
            cmb.Properties.ImmediatePopup = true;
        }
 
    }

简单调用样例

1、

        DataTable dtQYYF = clientCommon.GetMZYF();

        cmbQYYF.Properties.Columns.Clear();
        List<BaseColumnSet> listQYYF = new List<BaseColumnSet>();
        listQYYF.Add(new BaseColumnSet() { FieldName = "YFDM", Caption = "代码", Visible = false });
        listQYYF.Add(new BaseColumnSet() { FieldName = "YFMC", Caption = "名称", Visible = true });
        cmbQYYF.SetColumns(listQYYF);

        cmbQYYF.LookUpEditExtend(dtQYYF, "YFDM", "YFMC");
        if (dtQYYF.Rows.Count > 0)
            cmbQYYF.EditValue = dtQYYF.Rows[0]["YFDM"];
           dtGYFS = clientCommon.GetGYFS();//获取给药方式数据
           RepositoryItemGridLookUpEdit lookupEditGYFS = new RepositoryItemGridLookUpEdit();
           List<BaseColumnSet> listGYFS = new List<BaseColumnSet>();
           listGYFS.Add(new BaseColumnSet() { FieldName = "YPYFMC", Caption = "**方式", Width = 100, AllowEdit = false });

           lookupEditGYFS.SetColumns(listGYFS, dtGYFS, "YPYFDM", "YPYFMC", "请选择");
           lookupEditGYFS.TextEditStyle = TextEditStyles.Standard;
           lookupEditGYFS.PopupFormSize = new Size(100, 200);
           lookupEditGYFS.ImmediatePopup = true;
           //lookupEditGYFS.PopupFilterMode = PopupFilterMode.Contains;
           //lookupEditGYFS.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
           lookupEditGYFS.EditValueChanging += LookupEditGYFS_EditValueChanging;
           listWestPrescription.Add(new BaseColumnSet() { FieldName = "GYFS", Caption = "**方式", Width = 80, ColumnEdit = lookupEditGYFS, VisibleIndex = 7 });
 
            RepositoryItemGridLookUpEdit lookupEditYPDM = new RepositoryItemGridLookUpEdit();
            #region 弹出设置列
            List<BaseColumnSet> listPopup = new List<BaseColumnSet>();
            listPopup.Add(new BaseColumnSet() { FieldName = "YPMC", Caption = "名称", Width = 200, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "PYDM", Caption = "拼音码", Width = 60, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "GG", Caption = "规格", Width = 60, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "LSJ", Caption = "***", Width = 80, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "SL", Caption = "**", Width = 60, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "PC", Caption = "**", Width = 60, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "PH", Caption = "**", Width = 60, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "CDMC", Caption = "****", Width = 60, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "YBBZ", Caption = "****", Width = 60, AllowEdit = false });
 
            listPopup.Add(new BaseColumnSet() { FieldName = "YPLX", Caption = "***", Width = 60, AllowEdit = false });
            listPopup.Add(new BaseColumnSet() { FieldName = "BXBZ", Caption = "****", Width = 60, AllowEdit = false });
            #endregion
 
            lookupEditYPDM.SetColumns(listPopup, dtYPDM, "YPDM", "YPMC", "");
            lookupEditYPDM.TextEditStyle = TextEditStyles.Standard;
            lookupEditYPDM.PopupFormSize = new Size(500, 200);
            lookupEditYPDM.ImmediatePopup = true;
            //lookupEditYPDM.PopupFilterMode = PopupFilterMode.Contains;
            //lookupEditYPDM.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            lookupEditYPDM.CustomDisplayText += LookupEditYPDM_CustomDisplayText;//因为列表中只有部分药品数据,故需修改显示内容
            lookupEditYPDM.EditValueChanging += LookupEditYPDM_EditValueChanging;
 
            listWestPrescription.Add(new BaseColumnSet() { FieldName = "YPDM", Caption = "名称", Width = 200, ColumnEdit = lookupEditYPDM, VisibleIndex = 3 });

事件

 
            gv_West.OptionsMenu.EnableColumnMenu = false;
            //gv_WestPrescription.OptionsView.AllowCellMerge = false;//合并单元格(AllowCellMerge)和复选框(MultiSelectMode)不能同时用
            gv_West.OptionsSelection.MultiSelect = true;
            gv_West.OptionsSelection.ShowCheckBoxSelectorInColumnHeader = DevExpress.Utils.DefaultBoolean.True;
            gv_West.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect;
            gv_West.OptionsSelection.CheckBoxSelectorColumnWidth = 45;//设置宽度
            gv_West.CellValueChanging += Gv_West_CellValueChanging;
            gv_West.FocusedRowChanged += Gv_West_FocusedRowChanged;
 
            gv_West.OptionsCustomization.AllowColumnMoving = false;//设置列不可移动
            gv_West.OptionsView.ColumnAutoWidth = false;//取消列自适应宽度
            gv_West.ShowingEditor += Gv_West_ShowingEditor;
 
        /// <summary>
        /// 设置LookUpEditYPDM显示内容
        /// </summary>
        private void LookupEditYPDM_CustomDisplayText(object sender, CustomDisplayTextEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(e.DisplayText))
            {
                foreach (DataRow dr in dtWestDataSource.Rows)
                {
                    if (dr["YPDM"].ToString() == e.Value.ToString())
                        e.DisplayText = dr["YPMC"].ToString();
                }
            }
        }
 
        /// <summary>
        /// 设置行数据,不可修改
        /// </summary>
        private void Gv_West_ShowingEditor(object sender, CancelEventArgs e)
        {
            DataRow dr = gv_West.GetDataRow(gv_West.FocusedRowHandle);
 
            if (dr != null)
            {
                if (dr["CFZTMC"].ToString() == "提交")
                    e.Cancel = true;
            }
        }
 
        #region 行内编辑事件及设置数据源
        /// <summary>
        /// 单元格值改变事件
        /// </summary>
        private void Gv_West_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            switch (e.Column.FieldName)
            {
                case "YPDM": RepositoryItem_SelectYPXX(e); break;
                //case "GYFS": RepositoryItem_SelectGYFS(e); break;
                //case "GYPL": RepositoryItem_SelectGYPL(e); break;
                //case "YSZT": RepositoryItem_SelectYSZT(e); break;
                case "SL": JudgeKCL("SL", sender, e); break;
                case "TS": JudgeKCL("TS", sender, e); break;
                default: break;
            }
        }
 
        /// <summary>
        /// 选择**
        /// </summary>
        /// <param name="e"></param>
        private void RepositoryItem_SelectYPXX(DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            RepositoryItemGridLookUpEdit lookupEditYPDM = gv_West.Columns["YPDM"].ColumnEdit as RepositoryItemGridLookUpEdit;
 
            if (lookupEditYPDM.GetRowByKeyValue(e.Value) != null)//选中项不为空,设置当前行的值;选中项为空,重新根据输入值加载下拉面板的值;
            {
                DataRow dr = ((DataRowView)lookupEditYPDM.GetRowByKeyValue(e.Value)).Row;
                #region 设置当前行数据
                gv_West.SetRowCellValue(e.RowHandle, "YPDM", dr["YPDM"]);
                gv_West.SetRowCellValue(e.RowHandle, "YPMC", dr["YPMC"]);
                gv_West.SetRowCellValue(e.RowHandle, "JL", dr["DEFAULT_JL"]);
                gv_West.SetRowCellValue(e.RowHandle, "JLDW", dr["JLDW"]);
                gv_West.SetRowCellValue(e.RowHandle, "GG", dr["GG"]);
                gv_West.SetRowCellValue(e.RowHandle, "SL", 0);
                string zybzStr = GetZYBZ();
                gv_West.SetRowCellValue(e.RowHandle, "ZYBZ", zybzStr);
                gv_West.SetRowCellValue(e.RowHandle, "SXH", "1");
                gv_West.SetRowCellValue(e.RowHandle, "LSJ", dr["LSJ"]);//***
                gv_West.SetRowCellValue(e.RowHandle, "KCL", dr["SL"]);//***
                gv_West.SetRowCellValue(e.RowHandle, "DW", dr["DW"].ToString());
                gv_West.SetRowCellValue(e.RowHandle, "YPYF", dr["DEFAULT_YF"]);//**
 
                string ts = txtTS.EditValue.ToString();
                gv_West.SetRowCellValue(e.RowHandle, "TS", ts);
 
                gv_West.SetRowCellValue(e.RowHandle, "MZDW", dr["MZDW"].ToString());
                gv_West.SetRowCellValue(e.RowHandle, "MZDJ", dr["MZDJ"]);
                gv_West.SetRowCellValue(e.RowHandle, "CDDM", dr["CDDM"]);
                gv_West.SetRowCellValue(e.RowHandle, "PC", dr["PC"]);
                gv_West.SetRowCellValue(e.RowHandle, "PH", dr["PH"]);
                gv_West.SetRowCellValue(e.RowHandle, "PS", dr["SFPS"]);
                gv_West.SetRowCellValue(e.RowHandle, "SYZ", "1");
                gv_West.SetRowCellValue(e.RowHandle, "BXBZ", dr["BXBZ"]);
                gv_West.SetRowCellValue(e.RowHandle, "SFBL", dr["SFBL"]); //****
                gv_West.SetRowCellValue(e.RowHandle, "MZBL", dr["MZBL"]);
 
                #endregion
            }
            else if (e.Value != null && !string.IsNullOrWhiteSpace(e.Value.ToString()))
            {
                //根据当前输入内容,重新获取药品数据源,需去掉当前控件的查询功能,让当前控件的面板弹出
                //DataTable dtYPXX = GetYPXX(e.Value.ToString());
                //lookupEditYPDM.DataSource = dtYPXX;
 
                //此处数据源设置完,lookupEditYPDM.View.DataSource依然为空,故显示结果为空
            }
        }
 
        /// <summary>
        /// 焦点行改变事件
        /// </summary>
        private void Gv_West_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            ShowCFInfo();
        }
 
        /// <summary>
        /// 获取****
        /// </summary>
        /// <returns>1**;0***</returns>
        private string GetZYBZ()
        {
            string result = "1";//1**;0***
            DataTable dt = gridCtrlWest.DataSource as DataTable;
 
            if (dt == null)
            {
                return result;
            }
 
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["CFZTMC"].ToString() == "开单")
                {
                    return "0";//1**;0***
                }
                else if (string.IsNullOrWhiteSpace(dr["CFZTMC"].ToString()) && dr["ZYBZ"].ToString() == "1")
                {
                    return "0";//1**;0***
                }
            }
 
            return result;
        }
 
        private void LookupEditYPDM_EditValueChanging(object sender, ChangingEventArgs e)
        {
            this.BeginInvoke(new System.Windows.Forms.MethodInvoker(delegate
            {
                CtrlSetCommon.FilterLookup(sender, new List<string>() { "PYDM", "YPMC", "YPDM" });
            }));
        }
 
        private void LookupEditGYFS_EditValueChanging(object sender, ChangingEventArgs e)
        {
            this.BeginInvoke(new System.Windows.Forms.MethodInvoker(delegate
            {
                CtrlSetCommon.FilterLookup(sender, new List<string>() { "PYDM", "YPYFDM", "YPYFMC" });
            }));
        }
 
        private void LookupEditGYPL_EditValueChanging(object sender, ChangingEventArgs e)
        {
            this.BeginInvoke(new System.Windows.Forms.MethodInvoker(delegate
            {
                CtrlSetCommon.FilterLookup(sender, new List<string>() { "PYDM", "BDDM", "BDMC" });
            }));
        }
 
        /// <summary>
        /// 判断***
        /// </summary>
        private void JudgeKCL(string columnName, object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            DataRow dr = (gv_West.GetRow(e.RowHandle) as DataRowView).Row;
            string strSL = dr["SL"] == null ? "0" : dr["SL"].ToString();//**
            string strTS = dr["TS"] == null ? "0" : dr["TS"].ToString();//**
            string strKCL = dr["KCL"] == null ? "0" : dr["KCL"].ToString();//***
            string currentValue = (e.Value == null || string.IsNullOrEmpty(e.Value.ToString())) ? "0" : e.Value.ToString();
 
            int slInt = 0, tsInt = 0, kclInt = 0;
            int.TryParse(strSL, out slInt);
            int.TryParse(strTS, out tsInt);
            int.TryParse(strKCL, out kclInt);
 
 
            if (columnName == "SL")
                slInt = int.Parse(currentValue);
            else if (columnName == "TS")
                tsInt = int.Parse(currentValue);
 
            if (slInt * tsInt > kclInt)
            {
                XtraMessageBox.Show("当前**下的****不能大于***" + strKCL + " ,请修改此行" + (columnName == "TS" ? "**" : "**") + "!", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
 
            ShowCFInfo();
        }
 
        #endregion

posted on 2023-05-26 15:50  manber  阅读(714)  评论(0)    收藏  举报

导航