?? 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 + -