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

📄 ucdictksxxwh.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 Oracle.DataAccess.Client;
using Sybase.DataWindow;

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

namespace Qeb.GY
{
    public partial class UCDictKsXxWh : Qeb.GY.UCDictBase
    {
        DataTable dtKsXx = null;
        int Jc = 0;
        public UCDictKsXxWh()
        {
            InitializeComponent();
        }

        public void InitTreeView()
        {
            tvCatalog.Nodes.Clear();
            QDataStore dsYqXx = null;
            
            QDataStore dsKsXx = null;
            try
            {
                tvCatalog.BeginUpdate();
                DbProxyClient proxy = new DbProxyClient();

                //取院区信息
                dsYqXx = new QDataStore();
                dsYqXx.LibraryList = PBL.GyPbl;
                dsYqXx.DataWindowObject = GyDataObjects.D_Gy_YqXx;
                proxy.Clear();
                proxy.Retrieve(dsYqXx);

                //取科室信息
                dsKsXx = new QDataStore();
                dsKsXx.LibraryList = PBL.GyPbl;
                dsKsXx.DataWindowObject = GyDataObjects.D_Gy_KsXx;
                proxy.Clear();
                proxy.AddRetrieveParam("p_ksid", "all");
                proxy.Retrieve(dsKsXx);

                dtKsXx = dsKsXx.CovertToDataTable();
                
                string yqid = "";
                string yqmc = "";
                dsYqXx.SetSort("pxxh");
                dsYqXx.Sort();
                for (int i = 1; i < dsYqXx.RowCount + 1; i++)
                {
                    if (dsYqXx.IsItemNull(i, "yqid") || dsYqXx.IsItemNull(i, "yqmc"))
                        continue;
                    else
                    {
                        yqid = dsYqXx.GetItemString(i, "yqid");
                        yqmc = dsYqXx.GetItemString(i, "yqmc");
                    }

                    //院区
                    TreeNode nodeYq = tvCatalog.Nodes.Add(yqid, yqmc);
                    nodeYq.Tag = yqid;
                    nodeYq.ImageKey = QTreeView.ImageKeyEnum.Level1_Close.ToString();
                    nodeYq.SelectedImageKey = QTreeView.ImageKeyEnum.Level1_Open.ToString();
                    //
                    AddSubTreeView(nodeYq,dtKsXx, yqid, "0");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("初始化导航树发生异常:" + ex.Message);
            }
            finally
            {
                if (dsYqXx != null)
                    dsYqXx.Dispose();
                if (dsKsXx != null)
                    dsKsXx.Dispose();
                if (dtKsXx != null)
                    dtKsXx.Dispose();

                tvCatalog.EndUpdate();
            }
        }

        private void AddSubTreeView(TreeNode parentNode,DataTable dtKsXx, string yqId,string flKsId)
        {
            DataRow[] rows;

            rows = dtKsXx.Select("yqid='" + yqId + "' and flksid='" + flKsId + "'");
            if (rows.Length == 0)
                return;

            string ksId = "";
            string ksMc = "";
            foreach (DataRow dr in rows)
            {
                ksId = dr["ksid"].ToString();
                ksMc = dr["ksmc"].ToString();

                TreeNode node = parentNode.Nodes.Add(ksId, ksMc);
                node.Tag = ksId;
                if (flKsId == "0")
                {
                    node.ImageKey = QTreeView.ImageKeyEnum.Level2_Close.ToString();
                    node.SelectedImageKey = QTreeView.ImageKeyEnum.Level2_Open.ToString();
                }
                else
                {
                    node.ImageKey = QTreeView.ImageKeyEnum.Level3_Close.ToString();
                    node.SelectedImageKey = QTreeView.ImageKeyEnum.Level3_Open.ToString();
                }

                AddSubTreeView(node, dtKsXx, yqId, dr["ksid"].ToString());
            }
        }

        private void UCDictKsXxWh_Load(object sender, EventArgs e)
        {
            InitTreeView();
            this.dwKsXx.LibraryList = PBL.GyPbl;
            this.dwKsXx.DataWindowObject = GyDataObjects.D_Gy_KsXx;
        }

        private void dwKsXx_EditChanged(object sender, EditChangedEventArgs e)
        {
            this.m_IsModified = true;
        }

        private void dwKsXx_Click(object sender, EventArgs e)
        {
            //if (dwKsXx.ObjectUnderMouse.Band.Type == BandType.Detail)
            //{
            //    string colNames = "|zfbz|gh|";
            //    string temp = "|" + dwKsXx.ObjectUnderMouse.Gob.Name + "|";
            //    if (colNames.IndexOf(temp)==0)
            //    {
            //        if (!this.m_IsModified)
            //        {
            //            this.m_IsModified = true;
            //        }
            //    }
            //}
        }

        private string GetFlKsId(TreeNode node)
        {
            if (node.Level == 0)
            {
                return "0";
            }
            else
            {
                return node.Tag.ToString();
            }
            
        }

        private void SetDwChild(string ksId,string yqId)
        {
            //
            DataWindowChild dwc = dwKsXx.GetChild("yqid");
            DbProxyClient proxy = App.DbProxy;
            proxy.Clear();
            proxy.Retrieve(dwc);

            //
            DataWindowChild dwcFlKs = dwKsXx.GetChild("flksid");
            proxy.Clear();
            proxy.AddRetrieveParam("p_yqid", yqId);
            proxy.Retrieve(dwcFlKs);
            
            //
            dwcFlKs.SetFilter("ksid <>'" + ksId + "'and jc<=" + Jc + " and flksid<>'" + ksId + "'");
            dwcFlKs.Filter();
            //int row = dwcFlKs.FindRow("ksid='" + ksId + "' or flksid ='" + ksId + "'", 1, dwcFlKs.RowCount);
            //while (row > 0)
            //{
            //    dwcFlKs.DeleteRow(row);
            //    if (row >= dwcFlKs.RowCount)
            //        break;

            //    row = dwcFlKs.FindRow("ksid='" + ksId + "' or flksid ='" + ksId + "'", row, dwcFlKs.RowCount);
            //}

            //
            int row = dwcFlKs.InsertRow(0);
            dwcFlKs.SetItemString(row, "ksid", "0");
            dwcFlKs.SetItemString(row, "ksmc","无");
            dwcFlKs.SetSort("ksid");
            dwcFlKs.Sort();
        }

        private void tvCatalog_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            if (e.Node.Level == 0)
            {
                return;
            }

            try
            {
                string ksId = e.Node.Tag.ToString();
                DbProxyClient proxy = App.DbProxy;
                proxy.Clear();
                proxy.AddRetrieveParam("p_ksid", ksId);
                proxy.Retrieve(dwKsXx);
                Jc = Convert.ToInt32(dwKsXx.GetItemString(1, "jc").ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                dwKsXx.Reset();
            }
            try
            {
                string yqId = GetYqId(tvCatalog.SelectedNode);

                string ksId = tvCatalog.SelectedNode.Tag.ToString();
                                
                SetDwChild(ksId,yqId);
                dwKsXx.Refresh();
                
            }
            catch (Exception ex)
            {
                MessageBox.Show("处理子数据窗口发生异常:" + ex.Message);
            }
        }

        private void tvCatalog_BeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
        {
            if (m_IsModified)
            {
                //MessageBox.
                //e.Cancel = true;
                this.m_IsModified = false;
                return;                
            }
            this.dwKsXx.Reset();
            
        }

        private void btnClose_Click(object sender, EventArgs e)
        {   
            this.ParentForm.Close();
        }

        private void btnPrint_Click(object sender, EventArgs e)
        {

        }

        private void btnRetrieve_Click(object sender, EventArgs e)
        {

        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (dwKsXx.RowCount == 0)
                return;
            if (this.m_IsModified == false)
                return;

            dwKsXx.AcceptText();

            StringBuilder ksSx = new StringBuilder();
            string[] colNames = new string[] { "gh", "lc", "jcha", "jy", "ss", "zl", "hl", "ck", "zyk", "xyk", "cyk", "zjs", "zyf", "xyf", "cyf", "lybm", "yys", "wcs", "tj", "flbm" };
            string temp = "";
            for (int i = 0; i < colNames.Length; i++)
            {
                if (dwKsXx.IsItemNull(1,colNames[i]))
                    ksSx.Append("0");
                else
                {
                    temp = dwKsXx.GetItemString(1, colNames[i]);
                    if (temp == "1")
                        ksSx.Append("1");
                    else
                        ksSx.Append("0");
                }
            }
            temp = ksSx.ToString();
            if (temp.Length < 40)
            {
                temp = temp.PadRight(40, '0');
            }
            dwKsXx.SetItemString(1, "kssx",temp);
            dwKsXx.SetItemSqlDecimal(1, "jc", Jc + 1);
            //dwKsXx.SetItemString(1, "SxJc", Jc);

            try
            {
                DbProxyClient proxy = App.DbProxy;
                proxy.Clear();
                proxy.AddDataWindow(this.dwKsXx);
                proxy.Update();
                this.m_IsModified = false;
                MessageBox.Show("信息保存成功!");
                RetrieveData();
                label1.Text = "";
            }
            catch (Exception ex)
            {
                MessageBox.Show("保存科室信息发生异常:" + ex.Message, MsgTitle.Error);
            }
        }

        private bool IsDel()
        {
            //待完成
            return true;
        }

        private void btnTvDel_Click(object sender, EventArgs e)
        {
            try
            {
                if (tvCatalog.SelectedNode.Level != 0)
                {
                    DbProxyClient proxy = App.DbProxy;
                    //判断是否子节点 nodes =0没有子节点,nodes>0有子节点
                    int nodes = tvCatalog.SelectedNode.Nodes.Count;
                    if (nodes > 0)
                    {
                        return;
                    }
                    //判断是否可删除
                    if (!IsDel())
                    {
                        //不能删除,MessageBox提示不可删除原因
                        return;
                    }
                    DialogResult result = DialogResult.No;
                    result = MessageBox.Show(this, "数据已修改,是否需要保存?", MsgTitle.Prompt, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (result == DialogResult.Yes)
                    {
                        //从数据库删除
                        dwKsXx.DeleteRow(0);
                        proxy.Clear();
                        proxy.AddDataWindow(dwKsXx);
                        proxy.Update();

                        //从界面移初
                        tvCatalog.SelectedNode.Remove();
                    }
                    else
                    {
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private string GetYqId(TreeNode node)
        {
            TreeNode nodeTemp = node;
            while (nodeTemp.Level > 0)
            {
                nodeTemp = nodeTemp.Parent;
            }
            return nodeTemp.Tag.ToString();
        }

        private void btnTvAdd_Click(object sender, EventArgs e)
        {
            //判断是否有修改为保存
            //...

            TreeNode node = tvCatalog.SelectedNode;

            string flKsId = GetFlKsId(node);

            string yqId = GetYqId(node);

            //
            dwKsXx.Reset();
            int row = dwKsXx.InsertRow(0);
            dwKsXx.SetItemString(row, "flksid", flKsId);
            dwKsXx.SetItemString(row, "yqid", yqId);

            //
            dwKsXx.SetItemDecimal(row, "zfbz", 0);
            dwKsXx.SetItemDecimal(row, "mjbz", 0);

            //
            SetDwChild("", yqId);
        }

        private void RetrieveData()
        {
            InitTreeView();
            this.dwKsXx.LibraryList = PBL.GyPbl;
            this.dwKsXx.DataWindowObject = GyDataObjects.D_Gy_KsXx;
        }

        private void dwKsXx_ItemChanged(object sender, Sybase.DataWindow.ItemChangedEventArgs e)
        {
            this.m_IsModified = true;
            if (e.ColumnName == "ksmc")
            {
                if (e.Data == null || e.Data.Trim() == "")
                {
                    e.Action = ItemChangedAction.Reject;
                    dwKsXx.SetItemNull(e.RowNumber, "ksmc");
                    dwKsXx.SetItemNull(e.RowNumber, "srm1");
                    dwKsXx.SetItemNull(e.RowNumber, "srm2");
                    dwKsXx.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 == "")
                {
                    dwKsXx.SetItemString(e.RowNumber, "srm1", srm1);
                    dwKsXx.SetItemString(e.RowNumber, "srm2", srm2);
                    dwKsXx.SetItemString(e.RowNumber, "srm3", srm3);
                }
                else
                {
                    MessageBox.Show(errMsg, MsgTitle.Error);
                }
            }
        }
    }
}

⌨️ 快捷键说明

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