上传下载应用

在企业内部网站中,可以通过在网站中发布通知和公告的方式,向员工传达重要信息,在发布公告或通知的时候,通常需要带一个资料文件。

公告的添加

页面源代码:

公告添加页面源
 1  <div id="icaption">
 2         <div id="title">
 3             添加公告</div>
 4         <asp:ValidationSummary ID="ValidationSummary1" ShowMessageBox="true" ShowSummary="false"
 5             runat="server" />
 6               <a href="NoticeMgst.aspx" id="btn_back"></a>
 7     </div>
 8     <div id="itable">
 9         <table cellspacing="1" width="1026" align="center">
10             <tr class="tr4">
11                 <td class="td1" width="15%">
12                     标题:
13                 </td>
14                 <td width="85%">
15                     <asp:TextBox ID="txtTitle" CssClass="publish_schedule" runat="server" MaxLength="30"></asp:TextBox>
16                 </td>
17             </tr>
18             <tr class="tr4">
19                 <td class="td1" width="15%">
20                     上传附件:
21                 </td>
22                 <td width="85%">
23                     <asp:FileUpload ID="fileLoad" runat="server" />
24                 </td>
25             </tr>
26             <tr class="tr4">
27                 <td class="td1" width="15%">
28                     公告提交人:
29                 </td>
30                 <td width="85%">
31                     <asp:TextBox ID="txtPerson" runat="server"></asp:TextBox>
32                 </td>
33             </tr>
34             <tr class="tr4">
35                 <td class="td1" width="15%">
36                     内容:
37                 </td>
38                 <td width="85%">
39                     <asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" Columns="40" Rows="5"></asp:TextBox>
40                 </td>
41             </tr>
42             <tr class="btools">
43                 <td colspan="2">
44                     <asp:Button ID="btnSave" runat="server" Text="保存" CssClass="btn" OnClick="btnSave_Click" />
45                     <input type="button" name="btnCancel" class="btn" onclick="window.location.href='NoticeMgst.aspx';"
46                         value="返回" />
47                 </td>
48             </tr>
49         </table>
50     </div>

后台:

后台代码
 1  protected void btnSave_Click(object sender, EventArgs e)
 2         {
 3             if (string.IsNullOrEmpty(this.txtTitle.Text.Trim()))
 4             {
 5                 MessageBox(Page, "公告标题不能为空!");
 6                 return;
 7             }
 8             if (string.IsNullOrEmpty(this.txtContent.Text.Trim()))
 9             {
10                 MessageBox(Page, "公告内容不能为空!");
11                 return;
12             }
13             if (string.IsNullOrEmpty(this.txtPerson.Text.Trim()))
14             {
15                 MessageBox(Page, "公告发布人不能为空!");
16                 return;
17             }
18             NeoBLL.NoticeBLL bll = new NeoBLL.NoticeBLL();
19             NeoModel.NoticeModel model = new NeoModel.NoticeModel();
20             string fileName = DateTime.Now.ToString("yyyyMMddhhmmssfff") + Path.GetExtension(this.fileLoad.FileName);
21             string fullPath = Server.MapPath(@"../upload/") + fileName;
22             model.NoticeTitle = this.txtTitle.Text.Trim();
23             model.PublishDate = DateTime.Now;
24             model.Publisher = "neo";
25             model.Content = this.txtContent.Text.Trim();
26             if (this.fileLoad.HasFile)
27             {
28                 model.filePath = @"upload/" + fileName;
29                 this.fileLoad.SaveAs(fullPath);
30             }
31             else
32             {
33                 model.filePath = "";
34             }
35             if (bll.AddNotice(model))
36             {
37                 string script = string.Format("alert('公告添加成功!');window.location.href='NoticeMgst.aspx';");
38                 ScriptManager.RegisterStartupScript(Page, typeof(Page), DateTime.Now.ToString(), script, true);
39             }
40             else
41             {
42                 MessageBox(Page, "公告添加失败!");
43             }
44         }

三层

View Code
namespace NeoModel
{
    public class NoticeModel
    {

        public NoticeModel() { }

        private int _id;
        public int ID
        {
            get { return _id; }
            set { _id = value; }
        }

        private string _publisher;
        public string Publisher
        {
            get { return _publisher; }
            set { _publisher = value; }
        }

        private string _content;
        public string Content
        {
            get { return _content; }
            set { _content = value; }
        }

        private string _noticeTitle;
        public string NoticeTitle
        {
            get { return _noticeTitle; }
            set { _noticeTitle = value; }
        }

        private DateTime _publishDate;
        public DateTime PublishDate
        {
            get { return _publishDate; }
            set { _publishDate = value; }
        }

        private string _filePath;
        public string filePath
        {
            get { return _filePath; }
            set { _filePath = value; }
        }
    }
}



namespace NeoDAL
{
    public class NoticeDal
    {
        public NoticeDal() { }

        public bool AddNotice(NeoModel.NoticeModel model)
        {
            string strSql = "INSERT INTO tbNotice([NoticeTime],[publisher],[content],[publishdate],[filePath]) VALUES(@NoticeTime,@publisher,@content,@publishdate,@filePath)";
            SqlParameter[] sp = { 
                                new SqlParameter("@NoticeTime",SqlDbType.NVarChar,50),
                                new SqlParameter("@publisher",SqlDbType.NVarChar,50),
                                new SqlParameter("@content",SqlDbType.NText),
                                new SqlParameter("@publishdate",SqlDbType.Date),
                                new SqlParameter("@filePath",SqlDbType.NVarChar,100)
                                };
            sp[0].Value = model.NoticeTitle;
            sp[1].Value = model.Publisher;
            sp[2].Value = model.Content;
            sp[3].Value = model.PublishDate;
            sp[4].Value = model.filePath;
            return DbHelperSQL.ExecuteSql(strSql, sp) > 0;
        }

        public DataTable GetNotices()
        {
            string strSql = "SELECT * FROM tbNotice";
            DataSet ds = DbHelperSQL.Query(strSql);
            if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0)
            {
                return new DataTable();
            }
            return ds.Tables[0];
        }
        public DataTable GetNotices(string id)
        {
            string strSql = string.Format("SELECT * FROM tbNotice where id={0}",id);
            DataSet ds = DbHelperSQL.Query(strSql);
            if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0)
            {
                return new DataTable();
            }
            return ds.Tables[0];
        }
    }
}



namespace NeoBLL
{
    public class NoticeBLL
    {
        NeoDAL.NoticeDal dal = new NeoDAL.NoticeDal();
        public NoticeBLL()
        {
        }

        public bool AddNotice(NeoModel.NoticeModel model)
        {
            return dal.AddNotice(model);
        }
        public DataTable GetNotices()
        {
            return dal.GetNotices();
        }
        public DataTable GetNotices(string id)
        {
            return dal.GetNotices(id);
        }
    }
}

公告的管理(含下载)

页面源:

前台源
 1  <div id="icaption">
 2         <div id="title">
 3             公告管理
 4         </div>
 5         <a href="AddNotice.aspx" id="btn_add"></a>
 6     </div>
 7     <div id="itable">
 8         <asp:GridView ID="gv_state" runat="server" GridLines="None" BorderWidth="0px" CellPadding="0"
 9             CellSpacing="1" align="center" AutoGenerateColumns="false" OnRowCommand="gv_state_RowCommand"
10             OnRowDataBound="gv_state_RowDataBound">
11             <Columns>
12                 <asp:TemplateField HeaderText="公告标题">
13                     <ItemTemplate>
14                         <%#((System.Data.DataRowView)Container.DataItem)["NoticeTime"]%>
15                         <asp:HiddenField ID="hidID" runat="server" Value='<%#Eval("ID") %>' />
16                     </ItemTemplate>
17                     <ItemStyle Width="20%" />
18                 </asp:TemplateField>
19                 <asp:TemplateField HeaderText="发布者">
20                     <ItemTemplate>
21                         <%#((System.Data.DataRowView)Container.DataItem)["publisher"]%>
22                     </ItemTemplate>
23                     <ItemStyle Width="10%" />
24                 </asp:TemplateField>
25                 <asp:TemplateField HeaderText="发布日期">
26                     <ItemTemplate>
27                         <%# Convert.ToDateTime( Eval("publishdate").ToString()).ToString("yyyy-MM-dd")%>
28                     </ItemTemplate>
29                     <ItemStyle Width="10%" />
30                 </asp:TemplateField>
31                 <asp:TemplateField HeaderText="下载附件">
32                     <ItemTemplate>
33                         <asp:LinkButton ID="linkBtn" CommandName="down" CommandArgument='<%#Eval("ID") %>'
34                             runat="server" Text="下载"></asp:LinkButton>
35                     </ItemTemplate>
36                     <ItemStyle Width="10%" />
37                 </asp:TemplateField>
38                 <asp:TemplateField HeaderText="公告内容">
39                     <ItemTemplate>
40                         <%# Eval("content").ToString().Length>50?Eval("content").ToString().Substring(0,50)+"...":Eval("content").ToString() %>
41                     </ItemTemplate>
42                 </asp:TemplateField>
43             </Columns>
44             <RowStyle CssClass="tr3" Font-Size="12px" Height="28px" />
45             <HeaderStyle CssClass="itable_title" />
46             <EmptyDataTemplate>
47                 <tr class="itable_title">
48                     <th width="20%">
49                         公告标题
50                     </th>
51                     <th width="20%">
52                         发布者
53                     </th>
54                     <th width="20%">
55                         发布日期
56                     </th>
57                     <th width="20%">
58                         下载附件
59                     </th>
60                     <th width="20%">
61                         公告内容
62                     </th>
63                 </tr>
64                 <tr class="tr3">
65                     <td class="grid_no_result" colspan="5">
66                         <span>当前没有查询记录</span>
67                     </td>
68                 </tr>
69             </EmptyDataTemplate>
70         </asp:GridView>
71     </div>

后台代码:

后台
 1   public partial class NoticeMgst : BasePage
 2     {
 3         NeoBLL.NoticeBLL bll = new NeoBLL.NoticeBLL();
 4         protected void Page_Load(object sender, EventArgs e)
 5         {
 6             if (!IsPostBack)
 7             {
 8                 BindGrid();
 9             }
10         }
11 
12         public void BindGrid()
13         {
14             DataTable dt = bll.GetNotices();
15             this.gv_state.DataSource = dt;
16             this.gv_state.DataBind();
17         }
18 
19         protected void gv_state_RowCommand(object sender, GridViewCommandEventArgs e)
20         {
21             if (e.CommandName == "down")
22             {
23                 string id = e.CommandArgument.ToString();
24                 DataTable dt = bll.GetNotices(id);
25                 if (dt == null || dt.Rows.Count <= 0)
26                 {
27                     MessageBox(Page, "下载文件不存在!");
28                     return;
29                 }
30                 if (string.IsNullOrEmpty(dt.Rows[0]["filePath"].ToString()))
31                 {
32                     MessageBox(Page, "下载文件不存在!");
33                     return;
34                 }
35                 string filePath = dt.Rows[0]["filePath"].ToString();
36                 FileInfo fileInfo = new FileInfo(Server.MapPath(@"../" + filePath));
37                 if (fileInfo.Exists)
38                 {
39                     Response.Clear();
40                     Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileInfo.Name));
41                     Response.AddHeader("content-Length", fileInfo.Length.ToString());
42                     Response.WriteFile(fileInfo.FullName);
43                     Response.End();
44                     Response.Flush();
45                     Response.Clear();
46                 }
47                 else
48                 {
49                     MessageBox(Page, "下载文件不存在!");
50                 }
51             }
52         }
53 
54         protected void gv_state_RowDataBound(object sender, GridViewRowEventArgs e)
55         {
56             if (e.Row.RowType == DataControlRowType.DataRow)
57             {
58                 HiddenField hidID = (HiddenField)e.Row.FindControl("hidID");
59                 DataTable dt = bll.GetNotices(hidID.Value);
60                 LinkButton lk = (LinkButton)e.Row.FindControl("linkBtn");
61                 if (dt == null || dt.Rows.Count <= 0)
62                 {
63                     lk.Visible = false;
64                     return;
65                 }
66                 if (string.IsNullOrEmpty(dt.Rows[0]["filePath"].ToString()))
67                 {
68                     lk.Visible = false;
69                     return;
70                 }
71             }
72         }
73     }
原文地址:https://www.cnblogs.com/hfliyi/p/2697980.html