★33°空間‰


                                 ----★七彩服飾  【最潮拜☆日單精品】【Esprit】【Hotwind】滿150包郵-女裝-流行女裝    www.7color.hb.cn

                                 ----智力比知識重要,素質比智力重要,覺悟比素質更重要
          posts - 110,comments - 35,trackbacks - 0

          在網上看了許多能生成靜態頁的新聞系統,但基于asp.net的系統極少,閑下時間來自己寫了一個,發出來,大家一起研究,代碼沒做什么優化,只是實現了功能

           

          using System;
          using System.Collections;
          using System.ComponentModel;
          using System.Data;
          using System.Data.OleDb;
          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.Configuration;

          namespace makehtmlfile
          {
           /// <summary>
           /// makeallfiles 的摘要說明。
           /// </summary>
           public class makeallfiles : System.Web.UI.Page
           {
            public string strcon;
            public OleDbConnection conn;
            public string strSQL;

            private void Page_Load(object sender, System.EventArgs e)
            {
             
             InitialPages();// 在此處放置用戶代碼以初始化頁面
            }

            public void InitialPages()
            {
             strcon    = "provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath2"])+";";//連接字符竄// 在此處放置用戶代碼以初始化頁面
                      strSQL = "select id,class1id,class2id from news order by id desc";
             MakeAreaForShow();
             ReadNewsForWriteFileUserDataReader();      //同過DataReader來讀取數據,
             //ReadNewsForWriteFileUserDataSet();      //將數據直接掛入DataSet中來讀取,
            }
            /// <summary>
            /// 用來產生循環顯示頁面的區域,裝載生成HTML頁的ASPX頁面的區域
            /// </summary>
            public void MakeAreaForShow()
            {
             Response.Write("<span id=showImport></span>");
             Response.Write("<IE:Download ID='oDownload' STYLE='behavior:url(#default#download)'/>");
            }

            /// <summary>
            /// 通過DATAREADER來讀取數據
            /// </summary>
            public void ReadNewsForWriteFileUserDataReader()
            {
             int              num        =   0   ;
             string           newsid     =   null;
             string           class1id   =   null;
             string           class2id   =   null;
             OleDbDataReader  dr         =   null;
             OleDbConnection  conn       =   new OleDbConnection(strcon);
             conn.Open();
             OleDbCommand     mycommand  =   new OleDbCommand(strSQL,conn);
             dr                          =   mycommand.ExecuteReader();
             while(dr.Read())
             {
              newsid                  =   dr["id"].ToString();
              class1id                =   dr["class1id"].ToString();
              class2id                =   dr["class2id"].ToString();
                          WriteJScript(newsid,class1id,class2id);
              num++;
             }
             dr.Close();
             conn.Close();
             Response.Write(num.ToString());

            }

            /// <summary>
            /// 通過DATASET來讀取數據
            /// </summary>
            public void ReadNewsForWriteFileUserDataSet()
            {
             DataSet          ds         =   new DataSet();
             int              num        =   0   ;
             string           newsid     =   null;
             string           class1id   =   null;
             string           class2id   =   null;

             OleDbConnection  conn       =   new OleDbConnection(strcon);
             conn.Open();
             OleDbDataAdapter da         =   new OleDbDataAdapter(strSQL,conn);
             da.Fill(ds,"news");
             conn.Close();
             num                         =   ds.Tables["news"].Rows.Count;
             foreach(DataRow dr in ds.Tables["news"].Rows)
             {
              newsid     =    dr["id"].ToString();
              class1id   =    dr["class1id"].ToString();
              class2id   =    dr["class2id"].ToString();
              WriteJScript(newsid,class1id,class2id);
             }
             ds = null;
             Response.Write(num.ToString());
             
            }

            public void WriteJScript(string newsid,string class1id,string class2id)
            {
             Response.Write("<script>");
             Response.Write("function onDownloadDone(downDate)");
             Response.Write("{");
             Response.Write("showImport.innerHTML=downDate");
             Response.Write("}");
             Response.Write("oDownload.startDownload('makefile2.aspx?id=");
             Response.Write(newsid);
             Response.Write("&class1id=");
             Response.Write(class1id);
             Response.Write("&class2id=");
             Response.Write(class2id);
             Response.Write("',onDownloadDone)");
             Response.Write("</script>");
            }

            

            #region Web 窗體設計器生成的代碼
            override protected void OnInit(EventArgs e)
            {
             //
             // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
             //
             InitializeComponent();
             base.OnInit(e);
            }
            
            /// <summary>
            /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
            /// 此方法的內容。
            /// </summary>
            private void InitializeComponent()
            {   
             this.Load += new System.EventHandler(this.Page_Load);

            }
            #endregion
           }
          }

           

          using System;
          using System.Collections;
          using System.ComponentModel;
          using System.Data;
          using System.Configuration;
          using System.Data.OleDb;
          using System.Drawing;
          using System.Web;
          using System.IO;
          using System.Web.SessionState;
          using System.Web.UI;
          using System.Web.UI.WebControls;
          using System.Web.UI.HtmlControls;

          namespace makehtmlfile
          {
           /// <summary>
           /// makefile2 的摘要說明。
           /// </summary>
           public class makefile2 : System.Web.UI.Page
           {
            public string strcon;
            public OleDbConnection conn;
            
            public string class1id;
            public string class2id;
            //***********************************
            public string previd;
            public string prevtitle;
            public string nextid;
            public string nexttitle;
            //***********************************
            public string newstitle;
            public string newscontent;
            public string newsdate;
            public string newsip;
            public string newsid;
            //************************************

           

            private void Page_Load(object sender, System.EventArgs e)
            {
             strcon    = "provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath2"])+";";//連接字符竄// 在此處放置用戶代碼以初始化頁面
             if(Request.Params["id"]!=null&&Request.Params["class1id"]!=null&&Request.Params["class2id"]!=null)
             {
              InitialPages();

             }// 在此處放置用戶代碼以初始化頁面
            }

            public void InitialPages()
            {
             strcon    = "provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath2"])+";";
             
             if(Request.Params["id"]!=null)
             {
              newsid  = Request.Params["id"].ToString();
             }
             if(Request.Params["class1id"]!=null)
             {
              class1id  = Request.Params["class1id"].ToString();
             }
             if(Request.Params["class2id"]!=null)
             {
              class2id  = Request.Params["class2id"].ToString();
             }
             ReadDataBase(newsid,class2id);
             MakeHtmlFile(newsid,class1id,class2id);
            }

            /// <summary>
            /// 讀寫同一分類中,上一篇,和下一篇文章
            /// </summary>
            /// <param name="inputid"> 該文章ID</param>
            /// <param name="class2id">該文章所屬分類ID</param>
            public void ReadPrevAndNext(string inputid,string class2id)
            {
             int               id                 =    int.Parse(inputid);
             string            strPrevSQL         =    "select top 1 id,newstitle,newsdate from news where class2id='"+ class2id +"' and id<"+id+" order by id desc";
             string            strNextSQL         =    "select top 1 id,newstitle,newsdate from news where class2id='"+ class2id +"' and id>"+id+" order by id asc";
             OleDbDataReader   datar              =    null;
             OleDbConnection con       = new OleDbConnection(strcon);
             con.Open();
             OleDbCommand newcommand   = new OleDbCommand(strPrevSQL,con);
             datar                     = newcommand.ExecuteReader();
             while(datar.Read())
             {
              previd    =  datar["id"].ToString();
              prevtitle =  datar["newstitle"].ToString();
             }
             datar.Close();
             newcommand.CommandText = strNextSQL ;
             datar                  = newcommand.ExecuteReader();
             while(datar.Read())
             {
              nextid     =  datar["id"].ToString();
              nexttitle  =  datar["newstitle"].ToString();
             }
             con.Close();

            }

            /// <summary>
            /// 將文章信息從庫中讀出,并將準備生成的HTML文件路徑寫入庫中
            /// </summary>
            /// <param name="inputid"></param>
            /// <param name="class2id"></param>
            public void ReadDataBase(string inputid,string class2id)
            {
             string filename_w = MakeFileName(class1id,class2id,newsid)+".htm";
             
             ReadPrevAndNext(inputid,class2id);       //讀取下一篇和上一篇的信息。


             OleDbConnection mycon  = new OleDbConnection(strcon);          //打開數據庫連接
             mycon.Open();

             int              id    = int.Parse(inputid);
             string       strSQL    = "select * from news where id="+id;
             OleDbDataReader  dr    = null;
             OleDbCommand mycommand = new OleDbCommand(strSQL,mycon);
             dr                     = mycommand.ExecuteReader();
             while(dr.Read())
             {
              newstitle   = dr["newstitle"].ToString();
              newscontent = dr["newscontent"].ToString();
              newsdate    = dr["newsdate"].ToString();
              newsip      = dr["newsip"].ToString();
             }
             dr.Close();
             mycommand.CommandText = "update news set url='"+ filename_w +"' where id="+int.Parse(inputid);   //將生成的文件路徑寫入庫中,以遍在生成分類頁中方便使用
             mycommand.ExecuteNonQuery();
             mycon.Close();
             
            }


            /// <summary>
            /// 生成目標目錄和文件,主要用來生成不同分類的目錄
            /// </summary>
            /// <param name="inputstr"></param>
            /// <returns></returns>
            public string MakeCatalogName(string class1,string class2)            //生成目標目錄文件
            {
             string namestr   = "Article";
             string rootstr   = Server.MapPath(".").ToString();
             string class1str  = rootstr + "\\" + namestr + "_" + class1 + "\\";
             string class2str  = rootstr + "\\" + namestr + "_" + class1 + "\\" + namestr + "_" + class2 + "\\";
             if(!Directory.Exists(class1str))
             {
              Directory.CreateDirectory(class1str);
             }
             if(!Directory.Exists(class2str))
             {
              Directory.CreateDirectory(class2str);
             }
                        //創建目標文件夾
             return class2str;
            }

            /// <summary>
            /// 根據文章分類和ID生成文件名
            /// </summary>
            /// <param name="class1id"></param>
            /// <param name="class2id"></param>
            /// <param name="nid"></param>
            /// <returns>返回文件名</returns>
            public string MakeFileName(string class1,string class2,string id)    //生成文件名,能夠生成上下篇
            {
             string myclass2id    = class2;
             string myclass1id    = class1;
             string s             = DateTime.Now.Year.ToString()
              +DateTime.Now.Month.ToString()
              +DateTime.Now.Day.ToString()
              +"_"
              +myclass1id 
              +"_"
              +myclass2id                         //父類ID
              +"_"
              +id;                               //新聞ID
             return s;
            }

            /// <summary>
            /// 生成HTML文件
            /// </summary>
            /// <param name="nid">文章ID號</param>
            public void MakeHtmlFile(string nid,string cla1id,string cla2id)                      //  MakeHtmlFile(string nid,string cla1id,string cla2id,string filetemp)  用于區分不同的摸班
            {
             string file_path            =   Server.MapPath ("template/news_mb.htm");
             string desfilename          =   MakeFileName(cla1id,cla2id,nid)+".htm";
             string desfile              =   MakeCatalogName(cla1id,cla2id)+MakeFileName(cla1id,cla2id,nid)+".htm";
             string prevurl              =   MakeFileName(cla1id,cla2id,previd)+".htm";                 //根據分類和ID生成上下篇的文件連接名
             string nexturl              =   MakeFileName(cla1id,cla2id,nextid)+".htm";                 //下篇
             System.Text.Encoding code   =   System.Text.Encoding.GetEncoding("gb2312");
            
             StreamReader srd            =   null;        //讀
             StreamWriter swr            =   null;        //寫
            
             string strFile              =   null ;       //字符串
            
             try
             {
              srd                     =   new StreamReader(file_path, code);
              strFile                 =   srd.ReadToEnd(); // 讀取文件
             }
             catch(Exception exp)
             {
              HttpContext.Current.Response.Write(exp.Message);
              HttpContext.Current.Response.End();
              srd.Close();
             }
            
             strFile = strFile.Replace("$title$",newstitle);
             strFile = strFile.Replace("$content$",newscontent);
             strFile = strFile.Replace("$date$",newsdate);
             strFile = strFile.Replace("$ip$",newsip);
             strFile = strFile.Replace("$prev$",prevtitle);
             strFile = strFile.Replace("$next$",nexttitle);
             strFile = strFile.Replace("$prevurl$",prevurl);
             strFile = strFile.Replace("$nexturl$",nexturl);
           
             try
             {
              swr = new StreamWriter(desfile,false,code);
              swr.Write(strFile);
              swr.Flush();
             }
             catch(Exception ex)
             {
              HttpContext.Current.Response.Write(ex.Message);
              HttpContext.Current.Response.End();
             }
             finally
             {
              swr.Close();
             }
             if(srd!=null)
             {
              srd.Close();
             }
             Response.Write(desfilename);

            }

            public void Open()
            {
             if(conn==null)
             {
              conn = new OleDbConnection(strcon);
              conn.Open();
             }
            }
            public void Close()
            {
             if(conn!=null)
             {
              conn.Close();
             }
            }

            #region Web 窗體設計器生成的代碼
            override protected void OnInit(EventArgs e)
            {
             //
             // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
             //
             InitializeComponent();
             base.OnInit(e);
            }
            
            /// <summary>
            /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
            /// 此方法的內容。
            /// </summary>
            private void InitializeComponent()
            {   
             this.Load += new System.EventHandler(this.Page_Load);
            }
            #endregion
           }
          }

          posted on 2007-04-11 17:51 圣域飛俠 閱讀(317) 評論(0)  編輯  收藏 所屬分類: 轉載
          主站蜘蛛池模板: 台北市| 武城县| 桂东县| 龙井市| 辽源市| 砀山县| 蒙自县| 新乡市| 淮北市| 农安县| 买车| 和静县| 攀枝花市| 潞城市| 三原县| 内乡县| 寻甸| 建湖县| 太白县| 蛟河市| 潜山县| 清镇市| 花莲县| 连云港市| 丹寨县| 疏勒县| 闻喜县| 大石桥市| 衡山县| 大关县| 兴义市| 瑞丽市| 彭山县| 剑河县| 恩平市| 怀远县| 苍南县| 西盟| 平南县| 鸡西市| 怀安县|