一步一步建立我的MIS系统:程序管理ProgramMan.cs

using System;
using System.Data;
using System.Collections;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;


using EwEAI.Data;

namespace EwEAI.Business.Classes.IT
{
    /// <summary>
    /// Summary description for Programs
    /// </summary>
    public class ProgramMan : BusinessObject
    {
        public ProgramMan():base("Programs")           
        {
        }

        protected override void AfterFill()
        {
            ProgramData.DefaultView.Sort = "ProgramName ASC";
            ProgramTreeData.DefaultView.Sort = "Parent ASC,ProgramName ASC";

            ProgramData.ChildRelations.Add(new DataRelation("下级程序",
                ProgramData.Columns["ProgramName"],
                ProgramTreeData.Columns["Parent"])
            );


            _TableCaptions["Programs"] = "程序管理";
            _TableCaptions["ProgramTrees"] = "下级程序";
        }

 
        protected override void InializeStruct()
        {
            //MasterData = new DataObject(TableName, UserName);
            ChildData AChild = new ChildData(new DataObject("ProgramTrees", IT.UserMan.UserName),
                "ProgramTrees",
                new string[] { "ProgramName" },
                new string[] { "Parent" },
                TableName);

            Children[AChild.TableName] = AChild;

        }
        protected override void ProcessBusinessFlow(DataSet set)
        {
           // throw new Exception("The method or operation is not implemented.");
        }


        public int Count
        {
            get
            {
                return ProgramData.Rows.Count;
            }
        }

        public DataTable ProgramData
        {
            get
            {
                return BusinessData.Tables["Programs"];
            }
        }

        public DataTable ProgramTreeData
        {
            get
            {
                return BusinessData.Tables["ProgramTrees"];
            }
        }

        public string[] GetTopMenu()
        {
            if (BusinessData == null)
                return null;

            ArrayList tmp = new ArrayList();
            foreach (DataRow dr in ProgramData.Rows)
            {
                if (dr.GetChildRows(ProgramData.ChildRelations[0]).Length > 0)
                    tmp.Add(dr["ProgramName"].ToString());
            }
            string[] Result = new string[tmp.Count];
            for (int i = 0; i < tmp.Count; i++)
                Result[i] = tmp[i].ToString();
            return Result;

        }

        public string[] GetTopMenu(string UserName, DataTable ProgramPrivileges)
        {
            if (BusinessData == null)
                return null;

            ArrayList tmp = new ArrayList();
            foreach (DataRow dr in ProgramData.Rows)
            {
                if (dr.GetChildRows(ProgramData.ChildRelations[0]).Length > 0)
                {
                    ProgramPrivileges.DefaultView.Sort = "UserName ASC,ProgramName ASC";

                    int index = ProgramPrivileges.DefaultView.Find(new object[]{
                        UserName,dr["ProgramName"].ToString()});
                    if (index != -1)
                        tmp.Add(dr["ProgramName"].ToString());
                }
            }
            string[] Result = new string[tmp.Count];
            for (int i = 0; i < tmp.Count; i++)
                Result[i] = tmp[i].ToString();
            return Result;

        }

        public Program this[int index]
        {
            get
            {
                if (index == -1)
                    return null;

                DataRow dr = ProgramData.DefaultView[index].Row;

                Program Result = new Program();
                Result.ProgramName = dr["ProgramName"].ToString();
                Result.ProgramCaption = dr["ProgramCaption"].ToString();
                Result.Author = dr["Author"].ToString();
                if (dr["CreateDate"] != null)
                    Result.CreateDate = (DateTime)dr["CreateDate"];

                Image img = null;
                if (dr["Icon"].ToString() != "")
                    img = Image.FromStream(new MemoryStream((byte[])dr["Icon"]));
                Result.LargeImage = img;

                if (dr["SmallIcon"].ToString() != "")
                    img = Image.FromStream(new MemoryStream((byte[])dr["SmallIcon"]));
                Result.SmallImage = img;

                Result.Version = dr["Version"].ToString();

                foreach (DataRow childRow in dr.GetChildRows(BusinessData.Relations[0]))
                {
                    ProgramTree tree = new ProgramTree(childRow["Parent"].ToString(),
                        childRow["ProgramName"].ToString());
                    Result[tree.Son] = tree;
                }

                return Result;
            }
            set
            {
                DataRow dr = ProgramData.DefaultView[index].Row;
                dr.BeginEdit();
                dr["ProgramName"] = value.ProgramName;
                dr["ProgramCaption"] = value.ProgramCaption;
                dr["Author"] = value.Author;
                dr["CreateDate"] = value.CreateDate;
                dr["Version"] = value.Version;

                MemoryStream l_buffer = null;
                if (value.LargeImage != null)
                {
                    value.LargeImage.Save(l_buffer, ImageFormat.Jpeg);
                    dr["Icon"] = l_buffer.ToArray();
                }
                MemoryStream s_buffer = null;
                if (value.SmallImage != null)
                {
                    value.SmallImage.Save(s_buffer, ImageFormat.Jpeg);
                    dr["SmallIcon"] = s_buffer.ToArray();
                }
                dr.EndEdit();

                foreach (DataRow childRow in dr.GetChildRows(BusinessData.Relations[0]))
                {
                    childRow.Delete();
                }

                foreach (ProgramTree tree in value._Children.Values)
                {
                    DataRow childRow = ProgramTreeData.NewRow();
                    childRow["Parent"] = tree.Parent;
                    childRow["ProgramName"] = tree.Son;

                    ProgramTreeData.Rows.Add(childRow);
                }
            }
        }

        public Program this[string ProgramName]
        {
            get
            {
                return this[GetIndexByName(ProgramName)];
            }
            set
            {
                this[GetIndexByName(ProgramName)] = value;
            }
        }

        public void AddAProgram(Program AProgram)
        {
            DataRowView dr = ProgramData.DefaultView.AddNew();
            dr["ProgramName"] = AProgram.ProgramName;
            dr.EndEdit();

            this[AProgram.ProgramName] = AProgram;
        }   

    }

    public class ProgramTree
    {
        public ProgramTree()
        {
        }

        public ProgramTree(string Parent, string Son)
        {
            this._Parent = Parent;
            this._Son = Son;
        }

        public string Parent
        {
            get
            {
                return _Parent;
            }
            set
            {
                _Parent = value;
            }
        }
        private string _Parent;

        public string Son
        {
            get
            {
                return _Son;
            }
            set
            {
                _Son = value;
            }
        }
        private string _Son;
    }


    public class Program
    {
        public ProgramTree this[int Index]
        {
            get
            {
                int count = 0;
                foreach (Object obj in _Children.Values)
                {
                    if (count == Index)
                    {
                        return (ProgramTree)obj;
                    }
                    count++;
                }

                return null;
            }
            set
            {
                int count = 0;
                string SonName = null;
                foreach (ProgramTree obj in _Children.Values)
                {
                    if (count == Index)
                    {
                        SonName = obj.Son;
                        break;
                    }
                    count++;
                }
                if (SonName != null)
                {
                    _Children[SonName] = value;
                    return;
                }

                _Children.Add(value.Son, value);
            }
        }
        public Hashtable Children
        {
            get
            {
                return _Children;
            }
        }
        internal Hashtable _Children = new Hashtable(8);

        public ProgramTree this[string Son]
        {
            get
            {
                return (ProgramTree)_Children[Son];
            }
            set
            {
                _Children[Son] = value;
            }
        }


        public string ProgramName
        {
            get
            {
                return _ProgramName;
            }
            set
            {
                _ProgramName = value;
            }
        }
        private string _ProgramName = "";

        public string ProgramCaption
        {
            get
            {
                return _ProgramCaption;
            }
            set
            {
                _ProgramCaption = value;
            }
        }
        private string _ProgramCaption = "";

        public string Author
        {
            get
            {
                return _Author;
            }
            set
            {
                _Author = value;
            }
        }
        private string _Author = "";

        public string Version
        {
            get
            {
                return _Version;
            }
            set
            {
                _Version = value;
            }
        }
        private string _Version = "";

        public string Remark
        {
            get
            {
                return _Remark;
            }
            set
            {
                _Remark = value;
            }
        }
        private string _Remark = "";

        public DateTime CreateDate
        {
            get
            {
                return _CreateDate;
            }
            set
            {
                _CreateDate = value;
            }
        }
        private DateTime _CreateDate;

        public Image LargeImage
        {
            get
            {
                return _LargeImage;
            }
            set
            {
                _LargeImage = value;
            }
        }
        private Image _LargeImage = null;

        public Image SmallImage
        {
            get
            {
                return _SmallImage;
            }
            set
            {
                _SmallImage = value;
            }
        }
        private Image _SmallImage = null;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值