📄 fileadmin.aspx.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 + -