⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucdictgydmwh.cs

📁 基于C/S的医疗卫生管理系统
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using Sybase.DataWindow;

using Qeb.Support;
using Qeb.Support.Common;
using Qeb.DBProxy;

namespace Qeb.GY
{
public partial class UCDictGyDmWh : Qeb.GY.UCDictBase
    {
        //检索参数
        private string m_RetrieveParam = "";

        public UCDictGyDmWh ()
        {
            InitializeComponent();
        }

        private void UCDictGyDmWh_Load(object sender, EventArgs e)
        {
            //初始化数据窗口
            this.dwGydm.LibraryList = PBL.GyPbl;
            this.dwGydm.DataWindowObject = GyDataObjects.D_Gy_Gydm;
            this.dwGydm.InitUI();
            try
            {
                dwGydm.SetProperty("DataWindow.ReadOnly", "Yes");
            }
            catch (Exception ex)
            {
                MessageBox.Show("设置数据窗口只读属性发生异常:" + ex.Message);
            }
            //this.RetrieveData();

            //订阅消息         
            this.SubscribeEvent(MsgEventDefine.Dict_RefreshWithParam);
        }

        #region 消息处理
        protected override void ProcessUIMessage(string messageId, UIMessageEventArgs e)
        {
            if (messageId == MsgEventDefine.Dict_RefreshWithParam)
            {
                FDictBase.TagInfo tagInfo;
                try
                {
                    tagInfo = (FDictBase.TagInfo)e.Values;
                    if (tagInfo.ControlName != "UCDictGyDmWh")
                        return;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("处理刷新数据消息发生异常(转换参数出错):" + ex.Message, 

MsgTitle.Error);
                    return;
                }
                          
               if (m_RetrieveParam != tagInfo.RefreshParam)
               {
                m_RetrieveParam = tagInfo.RefreshParam;
                if (m_RetrieveParam != "*")
                {
                    this.RetrieveData(tagInfo.RefreshParam);
                }
                //如果是根目录,不允许修改
                if (m_RetrieveParam=="*")
                    SetEnabled(false);
                else
                    SetEnabled(true);

               }
            }
            
        }
        #endregion

        #region 根据代码ID和代码名称查找记录
        public override void FindInDw(string value)
        {
            if (value == null)
                value = "";

            int findRow = dwGydm.FindRow("dmid='" + value + "'or dmmc='" + value + "'", 1, dwGydm.RowCount);
            if (findRow > 0)
            {
                dwGydm.ScrollToRow(findRow);
                dwGydm.SetRow(findRow);
            }

        }
        #endregion

        #region 数据完整性检查
        private bool CheckGydm()
        {
            string colName = "";
            string errorMsg = "";
            int rowNum = 0;
            int rowCount = 0;
            

            DataBuffer buffer = DataBuffer.Primary;

        find:
            if (buffer == DataBuffer.Primary)
                rowCount = dwGydm.RowCount;
            else
                rowCount = dwGydm.FilteredCount;

            rowNum = 0;
            do
            {

                rowNum = dwGydm.FindNextModifiedRow(rowNum, buffer);
                if (rowNum > 0)
                {
                    colName = "dmid";
                    if (this.dwGydm.IsItemNull(rowNum, colName))
                    {
                        errorMsg = "代码id";
                        goto Error;
                    }

                    colName = "dmmc";
                    if (this.dwGydm.IsItemNull(rowNum, colName))
                    {
                        errorMsg = "代码名称";
                        goto Error;
                    }         
                }
                else
                 {
                    rowNum = rowCount;
                 }
               }
            while (rowNum < rowCount);
            //处理过滤缓冲区
            if (buffer == DataBuffer.Primary && dwGydm.FilteredCount > 0)
            {
                buffer = DataBuffer.Filter;
                goto find;
            }


            Error:
            if (errorMsg != "")
            {
                if (buffer == DataBuffer.Filter)
                {
                    MessageBox.Show("数据输入不完整," + errorMsg + "没有输入,该记录已被过滤,重新设置过滤条件后可显示!", MsgTitle.Warning);
                }
                else
                {
                    MessageBox.Show("数据输入不完整,第" + rowNum.ToString() + "行" + errorMsg + "没有输入!", MsgTitle.Warning);
                    this.dwGydm.ScrollToRow(rowNum);
                    this.dwGydm.Focus();
                    this.dwGydm.SetRow(rowNum);
                    this.dwGydm.SetColumn(colName);
                }
                return false;
            }

            return true;
        }
        #endregion

        #region 增加
        private void btnAdd_Click(object sender, EventArgs e)
        {
            int rowIndex = dwGydm.InsertRow(0);
            dwGydm.SetRow(rowIndex);
            dwGydm.SetItemDecimal(rowIndex, "pxxh", dwGydm.GetRowIdFromRow(rowIndex));
            dwGydm.SetItemString(rowIndex, "flid", m_RetrieveParam);
            dwGydm.SetItemDecimal(rowIndex, "xtbz", 0);
            dwGydm.SetItemDecimal(rowIndex, "zfbz", 0);
            dwGydm.SetItemDecimal(rowIndex, "mzsy", 0);
            dwGydm.SetItemDecimal(rowIndex, "zysy", 0);            
            dwGydm.ScrollToRow(rowIndex);
            dwGydm.Focus();
            dwGydm.SetColumn("dmid");
           
        }
        #endregion

        #region 删除
        private void btnStop_Click(object sender, EventArgs e)
        {
            int rowNum = this.dwGydm.CurrentRow;
            if (rowNum > 0)
            {
                
                if (!dwGydm.IsItemNull(rowNum,"xtbz") && dwGydm.GetItemDecimal(rowNum, "xtbz") ==1)
                {
                    MessageBox.Show("系统标志为1,不允许修改", MsgTitle.Warning);
                    return;
                }
                else
                {
                    //改删除为作废
                    if (dwGydm.CurrentRow > 0)
                    {
                        //停用的记录如果是新增的,直接删除
                        RowStatus status = dwGydm.GetRowStatus(dwGydm.CurrentRow, DataBuffer.Primary);
                        if (status == RowStatus.New || status == RowStatus.NewAndModified)
                        {
                            dwGydm.DeleteRow(dwGydm.CurrentRow);
                            return;
                        }

                        //代码ID
                        string dmid = "";
                        if (!dwGydm.IsItemNull(dwGydm.CurrentRow, "dmid"))
                        {
                            dmid = dwGydm.GetItemString(dwGydm.CurrentRow, "dmid");
                        }

                        //代码名称
                        string dmmc = "";
                        if (!dwGydm.IsItemNull(dwGydm.CurrentRow, "dmmc"))
                        {
                            dmmc = dwGydm.GetItemString(dwGydm.CurrentRow, "dmmc");
                        }
                        DialogResult result = MessageBox.Show(this, "代码ID为【" + dmid + "】和代码名称为【" + dmmc + "】的信息将要被作废,您确定要作废吗?", MsgTitle.Prompt, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                        if (result == DialogResult.OK)
                        {
                            dwGydm.SetItemDecimal(dwGydm.CurrentRow, "zfbz", 1);
                            this.m_IsModified = true;
                            this.btnSave.Enabled = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("请选择需要删除的代码再单击删除按钮!", MsgTitle.Prompt);
                    }
                }
             }
        }
        #endregion

        #region 关闭
        private void btnClose_Click(object sender, EventArgs e)
        {

            this.ParentForm.Close();
        }
        #endregion

        #region 检索数据
        private void RetrieveData(string flId)
        {
            try
            {
                DbProxyClient proxy = App.DbProxy;
                proxy.Clear();
                proxy.AddRetrieveParam("p_flid", flId);
                proxy.Retrieve(this.dwGydm);
            }
            catch (Exception ex)
            {
                MessageBox.Show("检索数据出错:" + ex.Message, MsgTitle.Error);
            }
            finally
            {
                this.m_IsModified = false;
                btnSave.Enabled = false;
            }

        }
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            if (needSave() == DialogResult.Yes)
                return;
            this.RetrieveData(m_RetrieveParam);
        }
        private DialogResult needSave()
        {
            DialogResult result = DialogResult.No;
            if (this.m_IsModified)
            {
                result = MessageBox.Show(this, "数据已修改,是否需要保存?", MsgTitle.Prompt, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            }
            return result;
        }

        #endregion

        #region 修改
        private void btnModify_Click(object sender, EventArgs e)
        {
            try
            {
                dwGydm.SetProperty("DataWindow.ReadOnly", "No");
            }
            catch (Exception ex)
            {
                MessageBox.Show("设置数据窗口只读属性发生异常:" + ex.Message);
                return;
            }

            this.btnAdd.Enabled = true;
            this.btnStop.Enabled = true;
        }
        #endregion
        #region 是否为可修改级别
    private void SetEnabled(bool ok)
    {
        if(ok)
        {
            this.btnModify.Enabled = true;
        }
        else {
            this.btnModify.Enabled = false;
            btnAdd.Enabled = false;
            btnStop.Enabled = false;
            btnSave.Enabled = false;
        }
    }
        #endregion


        private void dwGydm_EditChanged(object sender, EditChangedEventArgs e)
        {
            if (!this.m_IsModified)
            {
                this.m_IsModified = true;
                this.btnSave.Enabled = true;
            }
        }
    private int finddmmc(string dmmc, int editRow)
    {
        int findRow = dwGydm.FindRow("dmmc='" + dmmc + "'", 1, this.dwGydm.RowCount);
        if (findRow == editRow)
        {
            if (editRow < dwGydm.RowCount)
            {
                findRow = dwGydm.FindRow("dmmc='" + dmmc + "'", editRow + 1, this.dwGydm.RowCount);
            }
        }
        return findRow;

    }

    private void dwGydm_ItemChanged(object sender, Sybase.DataWindow.ItemChangedEventArgs e)
    {
        switch (e.ColumnName)
        {
            case "dmid":
                if (e.Data == null || e.Data == "")
                {
                    MessageBox.Show("代码id不允许为空,请输入!");
                    e.Action = ItemChangedAction.Reject;
                }

                break;
            case "dmmc":
                if (e.Data == null || e.Data == "")
                {
                    MessageBox.Show("代码名称不允许为空,请输入!");
                    e.Action = ItemChangedAction.Reject;
                }
                else
                {
                    try
                    {
                        if (this.finddmmc(e.Data, e.RowNumber) > 0)
                        {
                            MessageBox.Show("代码名称已存在,不允许重复!", MsgTitle.Prompt);
                            e.Action = ItemChangedAction.RejectAndAllowFocusChange;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("代码名称是否已存在是发生异常:" + ex.Message, MsgTitle.Error);
                        e.Action = ItemChangedAction.Reject;
                    }
                }
                break;

        }
        if (e.ColumnName == "dmmc")
        {
            if (e.Data == null || e.Data.Trim() == "")
            {
                e.Action = Sybase.DataWindow.ItemChangedAction.Reject;
                dwGydm.SetItemNull(e.RowNumber, "dmmc");
                dwGydm.SetItemNull(e.RowNumber, "srm1");
                dwGydm.SetItemNull(e.RowNumber, "srm2");
                dwGydm.SetItemNull(e.RowNumber, "srm3");
            }
            string srm1 = "";
            string srm2 = "";
            string srm3 = "";

            string errMsg = StringHelper.GetSrm(e.Data, true, ref srm1, ref srm2, ref srm3);
            if (errMsg == "")
            {
                dwGydm.SetItemString(e.RowNumber, "srm1", srm1);
                dwGydm.SetItemString(e.RowNumber, "srm2", srm2);
                dwGydm.SetItemString(e.RowNumber, "srm3", srm3);
            }
            else
            {
                MessageBox.Show(errMsg, MsgTitle.Error);
            }
        }
    }

        private void dwGydm_Click(object sender, EventArgs e)
        {
            if (this.btnAdd.Enabled && dwGydm.ObjectUnderMouse.Band.Type == BandType.Detail)
            {

                if (!this.m_IsModified)
                {
                    this.m_IsModified = true;
                    this.btnSave.Enabled = true;
                }

            }
        }

        private void dwGydm_ItemError(object sender, ItemErrorEventArgs e)
        {
            e.Action = ItemErrorAction.RejectWithNoMessage;
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            dwGydm.AcceptText();

            //检验数据完整性
            if (!this.CheckGydm())
                return;


            try
            {
                DbProxyClient proxy = App.DbProxy;
                proxy.Clear();
                proxy.AddDataWindow(this.dwGydm);
                proxy.Update();
                this.m_IsModified = false;
                btnSave.Enabled = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show("保存公用代码发生异常:" + ex.Message, MsgTitle.Error);
            }

        }
    }




}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -