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

📄 fileadmin.aspx.cs

📁 这是一学习的好东西
💻 CS
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using DocAdmin.BLL ;
using DocAdmin.COMMON ;

namespace DocAdmin.USL
{
	/// <summary>
	/// NewFile 的摘要说明。
	/// </summary>
	public class FileAdmin : System.Web.UI.Page
	{
		#region 控件和变量
		protected System.Web.UI.WebControls.Label Label5;
		protected System.Web.UI.WebControls.Label Label8;
		protected System.Web.UI.WebControls.TextBox tb_FileName;
		protected System.Web.UI.WebControls.TextBox tb_Keyword;
		protected System.Web.UI.WebControls.TextBox tb_Note;
		protected System.Web.UI.WebControls.TextBox tb_CRDT;
		protected System.Web.UI.WebControls.Button b_Save;
		protected System.Web.UI.WebControls.DropDownList ddl_type;
		protected System.Web.UI.HtmlControls.HtmlInputHidden h_FolderID;
		protected System.Web.UI.HtmlControls.HtmlInputHidden h_FileID;
		protected System.Web.UI.WebControls.Button b_Upload;
		protected System.Web.UI.WebControls.Button b_AddCtrl;
		protected System.Web.UI.HtmlControls.HtmlInputFile fileUp;
		protected System.Web.UI.WebControls.DataGrid dgCtrl;
		protected System.Web.UI.WebControls.DataGrid dgAtt;
		private Usr usr = null ;
		private DataTable dtFileCtrl = null ;
		protected System.Web.UI.WebControls.Panel p_Upload;
		protected System.Web.UI.WebControls.TextBox tb_USERName;
		protected System.Web.UI.WebControls.Panel p_Admin;
		protected System.Web.UI.WebControls.RequiredFieldValidator R1;
		private DataTable dtFileAtt = null ;
		#endregion

		#region Page_Load	
		private void Page_Load(object sender, System.EventArgs e)
		{
			//取登录用户信息
			usr = DocAdminGlobals.LoginUsr ;
			if(usr==null)
			{
				//页面重定向到登录页面
				string url="Login.aspx" ;
				Page.Response.Redirect(url) ;
				return ;
			}

			//取文件权限表
			dtFileCtrl = DocAdminGlobals.dtCtrl ;

			//取文件附件列表
			dtFileAtt = (DataTable)Session["dtFileAtt"] ;
			if(dtFileAtt == null)
			{
				dtFileAtt = new DataTable() ;
			}

			if(!IsPostBack)
			{
				//初始化文件类型下拉框
				InitDDL() ;

				//从页面请求URL中获得目录和文件编号
				h_FolderID.Value = CommHandler.GetRequest(Page,"FOLDERID") ;
				h_FileID.Value = CommHandler.GetRequest(Page,"FILEID") ;
				string type = CommHandler.GetRequest(Page,"TYPE") ;
				int fileID = CommHandler.StringToInt(Page.Request["FILEID"]) ;
				
				
				if(fileID != 0)
				{
					if(type == "VIEW")
					{
						//查看时,保存按钮不可用
						this.b_Save.Visible = false ;
						this.b_Upload.Visible = false ;
						this.b_AddCtrl.Visible = false ;
					}
					else
					{
						//编辑时,有管理员权限才能编辑权限信息
						this.p_Admin.Visible = FileCtrl.HasAdminCtrl(usr.UserID,usr.GroupID,fileID) ;
					}
					//页面为修改文件,显示文件信息
					ShowFileInfo(fileID) ;
					//修改时,可添加附件
					this.p_Upload.Visible = true ;
				}
				else
				{
					//页面为新建文件,显示初始化信息
					this.tb_USERName.Text = usr.UserName ;
					this.tb_CRDT.Text = CommHandler.Today() ;
					//新建文件信息时,不能添加附件
					this.p_Upload.Visible = false ;					
				}
			}

			//绑定表格
			CommHandler.BindGrid(this.dgAtt,dtFileAtt) ;
			CommHandler.BindGrid(this.dgCtrl,dtFileCtrl) ;
		}
		#endregion

		#region 页面初始化
		private void InitDDL()
		{
			//文件类型下拉框
			CommHandler.DDL_Init(this.ddl_type,"Doc_FileType_GetForDDL",null,false) ;
		}

		private void ShowFileInfo(int fileID)
		{
			//实例一个文件信息对象
			DocFileInfo fi = new DocFileInfo() ;
			//调用文件信息对象的查询方法
			fi.GetFile(fileID) ;

			//将文件信息显示在界面上
			this.tb_CRDT.Text = CommHandler.DateTimeToString(fi.CRDT) ;
			this.tb_FileName.Text = fi.FileName ;
			this.tb_Keyword.Text = fi.Keyword ;
			this.tb_Note.Text = fi.Note ;
			this.tb_USERName.Text = fi.UserName ;
			//文件类型
			CommHandler.DDL_ShowItem(ddl_type,fi.Type.ToString()) ;	
			//文件权限信息
			ShowFileCtrl(fileID) ;
			//文件附件信息
			ShowFileAtt(fileID) ;
		
		}

		private void ShowFileCtrl(int fileID)
		{
			//查询文件权限信息
			this.dtFileCtrl = FileCtrl.GetFileCtrlFromFileID(fileID) ;
			DocAdminGlobals.dtCtrl = dtFileCtrl ;


			//绑定表格
			CommHandler.BindGrid(this.dgCtrl,dtFileCtrl);
		}

		private void ShowFileAtt(int fileID)
		{
			//查询文件附件信息
			this.dtFileAtt = FileAtt.GetFileAttFromFileID(fileID) ;
			Session["dtFileAtt"] = dtFileAtt ;
			//绑定表格
			CommHandler.BindGrid(this.dgAtt,this.dtFileAtt) ;
		}
		#endregion

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.b_Upload.Click += new System.EventHandler(this.b_Upload_Click);
			this.dgAtt.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgAtt_DeleteCommand);
			this.b_AddCtrl.Click += new System.EventHandler(this.b_AddCtrl_Click);
			this.dgCtrl.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgCtrl_DeleteCommand);
			this.b_Save.Click += new System.EventHandler(this.b_Save_Click);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		#region 上传文件
		private void b_Upload_Click(object sender, System.EventArgs e)
		{				
			int fileID = CommHandler.StringToInt(this.h_FileID.Value) ;
			if(fileID==0)
			{
				//文件号为空,表示新建文件,不添加附件
				CommHandler.Alert(Page,"请先保存文件后再添加附件!") ;
				return ;
			}
			try
			{ 
				//上传文件名
				string[] fileNames = this.fileUp.PostedFile.FileName.Split(new char []{'\\'});
				string fileName = fileNames[fileNames.Length-1] ;
				//上传路径
				string path = MapPath("")+"\\Upload\\" ;
				string fullName = path + fileName ;

				//如果文件已存在
				if(File.Exists(fullName))
				{
					CommHandler.Alert(Page,"文件已存在!") ;
					return ;
				}
				int fileSize = fileUp.PostedFile.ContentLength;
				byte[] fileByte = new byte[fileSize];
				
				if(fileSize>0)
				{					
					fileName = CommHandler.NowFormat() + fileName ;
					fullName = path + fileName ;
						
					//文件类型和上传的附件类型
					string [] type = fileName.Split('.'); 
					string fileType = type[1] ;
					string attType = fileUp.PostedFile.ContentType; 
					//读取文件
					Stream  StreamReader = fileUp.PostedFile.InputStream;
					StreamReader.Read(fileByte,0,fileSize); 

					//实例一个文件附件对象
					FileAtt fa = new FileAtt() ;
					//为文件附件对象绑定属性
					fa.FileID = fileID ;
					fa.FileType = fileType ;
					fa.AttName = fileName ;
					fa.AttPath = fullName ;
					fa.AttSize = fileSize ;
					fa.AttType = attType ;
					fa.Content = fileByte ;
					//调用添加方法
					int attFileID = fa.AddFileAtt() ;
					
					if(attFileID>0)
					{
						//将文件保存到服务器硬盘
						fileUp.PostedFile.SaveAs(fullName) ;
						CommHandler.Alert(Page,"文件上传成功!") ;
						//重新显示附件列表
						ShowFileAtt(fileID) ;
					}
					else
					{
						CommHandler.Alert(Page,"文件上传失败!") ;
					}
				}
				
			}
			catch(Exception ee)
			{				
				CommHandler.Alert(Page,"文件上传失败:"+ee.Message) ;
			}
		
		}
		#endregion

		#region 添加权限
		private void b_AddCtrl_Click(object sender, System.EventArgs e)
		{
			//弹出模态对话框以添加权限
			string url = "AddCtrl.aspx?TYPE=FILE&FILEID="+this.h_FileID.Value ;
			CommHandler.IFrame_PopUp(Page,url,"600","450") ;		
		}
		#endregion

		#region 保存
		private void b_Save_Click(object sender, System.EventArgs e)
		{
			int fileID = CommHandler.StringToInt(this.h_FileID.Value.Trim()) ;

			DocFileInfo fi = new DocFileInfo() ;
			BindFileInfo(fi) ;
			//新建
			if(fileID==0)
			{
				//新建文件信息				
				fileID = fi.AddFileInfo() ;

				if(fileID>0)
				{
					h_FileID.Value = fileID.ToString() ;
					//文件信息添加成功,新建文件权限信息
					SaveFileCtrl() ;	
			
					CommHandler.Alert(Page,"文件信息添加成功!") ;
				}				
			}
			//修改
			else
			{
				//修改文件权限信息
				fi.FileID = fileID ;
				int ret = fi.ModifyFileInfo() ;

				if(ret>0)
				{
					//修改文件权限信息
					SaveFileCtrl() ;
					CommHandler.Alert(Page,"文件信息修改成功!") ;
				}
			}
		
		}

		/// <summary>
		/// 从表格中获取权限信息存入DataRow中
		/// </summary>
		private void GetCtrlData(DataRow dr,int index)
		{			
			//管理权限		
			dr["AdminCtrl"] = ((RadioButton)dgCtrl.Items[index].FindControl("r_Admin")).Checked  ;
			//改写权限
			dr["WriteCtrl"] = ((RadioButton)dgCtrl.Items[index].FindControl("r_Write")).Checked ;
			//读取权限
			dr["ReadCtrl"] = ((RadioButton)dgCtrl.Items[index].FindControl("r_Read")).Checked  ;
			
		}

		private void SaveFileCtrl()
		{
			for(int i=0;i<dtFileCtrl.Rows.Count;i++)			
			{				
				DataRow dr = dtFileCtrl.Rows[i] ;
				FileCtrl fc = new FileCtrl() ;

				//从表格中获取权限信息
				GetCtrlData(dr,i) ;

				//绑定文件权限信息
				fc.FileID = CommHandler.StringToInt(h_FileID.Value) ;
				fc.GroupID = CommHandler.StringToInt(dr["GroupID"].ToString()) ;
				fc.UserID = CommHandler.StringToInt(dr["UserID"].ToString()) ;
				fc.AdminCtrl = CommHandler.StringToByte(dr["AdminCtrl"].ToString()) ;
				fc.WriteCtrl = CommHandler.StringToByte(dr["WriteCtrl"].ToString()) ;
				fc.ReadCtrl = CommHandler.StringToByte(dr["ReadCtrl"].ToString()) ;

				if(dr["CtrlID"].ToString() != "")
				{
					//修改							
					fc.CtrlID = CommHandler.StringToInt(dr["CtrlID"].ToString()) ;
					fc.ModifyFileCtrl() ;					

				}
				else
				{
					//新建
					//文件ID
					fc.FileID = CommHandler.StringToInt(h_FileID.Value) ;
					//调用添加文件控制权限方法
					int ctrlid = fc.AddFileCtrl() ;
					//将新产生的ID写回DataTable
					dr["FileID"] = h_FileID.Value ;
					dr["CtrlID"] = ctrlid.ToString() ;
				}
			}
		}

		

		private void BindFileInfo(DocFileInfo fi)
		{
			fi.FileName = this.tb_FileName.Text.Trim() ;
			fi.CrUsr = usr.UserID ;
			fi.FolderID = CommHandler.StringToInt(h_FolderID.Value) ;
			fi.Keyword = this.tb_Keyword.Text.Trim() ;
			fi.Note = this.tb_Note.Text.Trim() ;
			fi.MdUsr = this.usr.UserID ;
			fi.Type = CommHandler.StringToInt(this.ddl_type.SelectedValue) ;
		}
		#endregion

		#region 附件列表的删除事件
		private void dgAtt_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{
			//获取选中的行
			int i = e.Item.ItemIndex ;		
			DataRow dr = dtFileAtt.Rows[i] ;
			//附件ID
			int attFileID = CommHandler.StringToInt(dr["ATTFILEID"].ToString() ) ;
			//附件的路径
			string path = dr["AttType"].ToString() ;

			if(attFileID != 0)
			{
				//调用逻辑层方法从数据库删除该附件
				FileAtt.DeleteFileAtt(attFileID) ;
				//从表格删除该附件
				dtFileAtt.Rows.RemoveAt(i) ;
				Session["dtFileAtt"] = dtFileAtt ;
				//从硬盘删除该文件
				try
				{
					File.Delete(path) ;
				}
				catch
				{}
				//重新绑定表格
				CommHandler.BindGrid(this.dgAtt,this.dtFileAtt) ;
			}		
		}
		#endregion

		#region 文件权限列表的删除事件
		private void dgCtrl_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{
			int i = e.Item.ItemIndex ;

			DataRow dr = dtFileCtrl.Rows[i] ;

			int fileCtrlID = CommHandler.StringToInt(dr["CtrlID"].ToString()) ;
			if(fileCtrlID != 0)
			{
				//如果文件控制权限信息已经添加到数据库,先从数据库中删除
				FileCtrl.DeleteFileCtrl(fileCtrlID) ;
				//从DataTable中移除行
				dtFileCtrl.Rows.Remove(dr) ;
			}
			else
			{
				//从DataTable中移除行
				dtFileCtrl.Rows.Remove(dr) ;
			}
			//重新绑定表格
			DocAdminGlobals.dtCtrl = dtFileCtrl ;
			CommHandler.BindGrid(this.dgCtrl,dtFileCtrl) ;		
		}
		#endregion

	
	
	}
}

⌨️ 快捷键说明

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