Newer
Older
GHFX_REFACTOR / HFS_Forms / Frm_HFSfiles.cs
wxn on 2 Nov 2016 10 KB 提交
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using DevComponents.DotNetBar;

namespace Cyberpipe.HFS_Forms
{
    public partial class Frm_HFSfiles : Office2007Form
    {
        public Frm_HFSfiles()
        {
            InitializeComponent();
        }
        #region  公共变量
        HFS_logicfile.HFS_Affair HFSAClass = new Cyberpipe.HFS_logicfile.HFS_Affair();//实例化ModuleClass文件夹下的FrmAffairClass公共类 
        PictureBox PB;
        //string Imadir = "";
        #endregion

        public Frm_HFSfiles(PictureBox _PB)
        {
            InitializeComponent();

            PB = _PB;
        }
        private void Frm_HFSfiles_Load(object sender, EventArgs e)
        {
            bool show_bool = true;
            if (int.Parse(this.Tag.ToString()) == 0)
                show_bool = true;
            else
                show_bool = false;

            listView_Dir.Visible = show_bool;
            BT_ADD.Visible = show_bool;
            BT_DELETE.Visible = show_bool;
            TB_名称.Visible = !show_bool;
            LB_名称.Visible = !show_bool;
            //panel_Title.BackgroundImage = Image.FromFile(photoDir + "\\Image\\" + ModuleClass.FrmAffairClass.Redact_T + this.Tag.ToString() + ".JPG");
            switch (int.Parse(this.Tag.ToString()))
            {
                case 0:
                    {
                        listView_Dir.Items.Clear();//清空所有项的集合
                        listView_Dir.Columns.Clear();//清空所有列的集合
                        listView_Dir.GridLines = true;//在各数据之间形成网格线
                        listView_Dir.View = View.Details;//显示列名称
                        listView_Dir.FullRowSelect = true;//在单击某项时,对其进行选中
                        listView_Dir.Columns.Add("文件路径", listView_Dir.Width - 5, HorizontalAlignment.Center);//设置列标头的名称及大小
                        break;
                    }
                case 1:
                case 2:
                    {
                        if (int.Parse(this.Tag.ToString()) == 1)
                        {
                            LB_名称.Text = "文件名称:";
                            TB_名称.Text = Cyberpipe.HFS_logicfile.HFS_Affair.Redact_N;
                        }
                        if (int.Parse(this.Tag.ToString()) == 2)
                        {
                            TB_名称.Visible = show_bool;
                            LB_名称.Text = "是否删除该文件?";
                        }
                        break;
                    }
            }
            //FrmAClass.Clarity(panel_All.Controls);
        }

        private void BT_ADD_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter="所有文件(*.*)|*.*";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string Fdir = openFileDialog1.FileName;
                for (int i = 0; i < listView_Dir.Items.Count; i++)
                {
                    if (Fdir == listView_Dir.Items[i].Text)
                    {
                        MessageBox.Show("该文件已存在,无法添加。");
                        return;
                    }
                }
                ListViewItem lvi = new ListViewItem(Fdir);//实例化一个项
                listView_Dir.Items.Add(lvi);//添加列信息
                if (Fdir.Length > listView_Dir.Width)
                    listView_Dir.Width = Fdir.Length;
            }
        }

        private void BT_OK_Click(object sender, EventArgs e)
        {
            string sdir = "";//原目录
            string ddir = "";//目的目录 
            int m = int.Parse(this.Tag.ToString());//当前操作的标识
            int n = -1;//是否修改成功
            int PID = int.Parse(Cyberpipe.HFS_logicfile.HFS_Affair.Redact_M);//操用节点的ID号
             
            //获得项目名称
            string prjdirsql = "select NODEPATH,NODENAME from casic_hfs where" + " NODEID=" + PID;
            DataTable dt = OledbHelper.QueryTable(prjdirsql);
            string projdir = dt.Rows[0][0].ToString();
            string filename = dt.Rows[0][1].ToString();

            switch (m)
            {
                case 0:
                    {
                        if (listView_Dir.Items.Count > 0)
                        {
                            Cyberpipe.HFS_logicfile.HFS_Affair.ADD_LV.Items.Clear();//清空所有项的集合
                            Cyberpipe.HFS_logicfile.HFS_Affair.ADD_LV.Columns.Clear();//清空所有列的集合
                            Cyberpipe.HFS_logicfile.HFS_Affair.ADD_LV.GridLines = true;//在各数据之间形成网格线
                            Cyberpipe.HFS_logicfile.HFS_Affair.ADD_LV.View = View.Details;//显示列名称
                            Cyberpipe.HFS_logicfile.HFS_Affair.ADD_LV.Columns.Add("文件名", 80, HorizontalAlignment.Center);//设置列标头的名称及大小
                            for (int i = 0; i < listView_Dir.Items.Count; i++)
                            {
                                sdir = listView_Dir.Items[i].Text;
                                //ddir = Cyberpipe.HFS_logicfile.HFS_Affair.Redact_D + "\\" + HFSAClass.Files_Name(sdir, m);
                                ddir = projdir+"\\"+HFSAClass.Files_Name(sdir, m);
                                  
                                //添加文件 
                                FileStream fs = File.OpenRead(sdir); //文件转为byte[]
                                byte[] buffer = new byte[fs.Length];
                                fs.Read(buffer, 0, buffer.Length); 

                                udfiles.UpDownFile upfolder = new udfiles.UpDownFile(Utility.udserviceurl);
                                string newfileurl = Utility.uploadpath + "\\HFS\\" + ddir;
                                int result = upfolder.UploadFiles(newfileurl, buffer);
                                //判断上传时文件是否存在
                                if (result == 0)
                                {
                                    sdir = "insert into casic_hfs (NODEPID,NODENAME,NODEPATH,NODETYPE,NODESIGN)"
                                         + " values(" + PID + ",'" + HFSAClass.Files_Name(sdir, m) + "','" + projdir + "',"
                                         + m + ",'" + Utility.userName + "')";
                                    OledbHelper.getsqlcom(sdir);
                                    DataSet DS = OledbHelper.getDataSet("select max(NODEID) from casic_hfs", "casic_hfs");
                                    ListViewItem lvi = new ListViewItem(HFSAClass.Files_Name(ddir, m));//实例化一个项
                                    lvi.Tag = int.Parse(DS.Tables[0].Rows[0][0].ToString());
                                    Cyberpipe.HFS_logicfile.HFS_Affair.ADD_LV.Items.Add(lvi);//添加列信息
                                }
                                else if (result == 1)
                                    listView_Dir.Items[i].Remove();
                                else if(result==2)
                                {
                                    if (MessageBox.Show("文件夹下有同名文件,是否替换?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                                        result = upfolder.UploadFilesDir(newfileurl, buffer);

                                    if (result == 0)
                                    {
                                        MessageBox.Show("文件覆盖成功");
                                    } 
                                }
                                DialogResult = DialogResult.OK;//将当前窗体的对话框返回值设为OK
                            }
                        }
                        else
                        {
                            MessageBox.Show("添加的文件不能为空。");
                        }
                        break;
                    }
                case 1:
                    {
                        PB = null;
                        ddir = Cyberpipe.HFS_logicfile.HFS_Affair.Redact_D + "\\" + filename; 
                        sdir = HFSAClass.UpAndDown_Dir(Cyberpipe.HFS_logicfile.HFS_Affair.Redact_D) + "\\Files\\HFS\\" + TB_名称.Text.Trim();

                        sdir = "update casic_hfs set NODENAME='" + TB_名称.Text.Trim()
                            + "',NODEPATH='" + projdir + "' where NODEID=" 
                            + Cyberpipe.HFS_logicfile.HFS_Affair.Redact_M;
                         
                        break;
                    }
                case 2:
                    {
                        PB = null;
                        ddir = Cyberpipe.HFS_logicfile.HFS_Affair.Redact_D + "\\" + filename; ;
                        sdir = "delete casic_hfs where NODEID=" 
                            + Cyberpipe.HFS_logicfile.HFS_Affair.Redact_M; 
                        break;
                    }
            } 
            if (m > 0)
            {
                //n = HFSAClass.Folder_Handle(ddir, "", TB_名称.Text.Trim(), m);

                udfiles.UpDownFile upfolder = new udfiles.UpDownFile(Utility.udserviceurl);
                string filenameurl = Utility.uploadpath + "\\HFS\\" + projdir  + "\\" + Cyberpipe.HFS_logicfile.HFS_Affair.Redact_N;
                n = upfolder.File_Handle(filenameurl, "", TB_名称.Text.Trim(), m);
                         
                if (n == 1)
                {
                    DialogResult = DialogResult.Cancel;//将当前窗体的对话框返回值设为Cancel
                }
                else
                {
                    OledbHelper.getsqlcom(sdir);
                    if (m == 1)
                        Cyberpipe.HFS_logicfile.HFS_Affair.Redact_N = TB_名称.Text;
                    DialogResult = DialogResult.OK;//将当前窗体的对话框返回值设为OK
                }
            }
            Close();
        }

        private void BT_DELETE_Click(object sender, EventArgs e)
        {
            if (listView_Dir.SelectedItems.Count > 0)
            {
                ListViewItem HLVI = listView_Dir.SelectedItems[0];
                HLVI.Remove();
            }
            else
            {
                MessageBox.Show("请选择要删除的文件。");
            }
        }

        private void BT_CANEL_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;//将当前窗体的对话框返回值设为Cancel
            Close();
        }

        private void F_添加文件_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '\r')
                BT_OK_Click(sender, e);
        }

    }
}