现在的位置: 首页 > 综合 > 正文

.net把详细页及列表生成为静态页2

2013年01月26日 ⁄ 综合 ⁄ 共 4066字 ⁄ 字号 评论关闭
.net把详细页及列表生成为静态页2
2010-01-27 18:02
     /// <summary>
        
/// //生成列表页面
        
/// </summary>
        
/// <param name="strMFile">新闻列表模板文件</param>
        
/// <param name="pageSize">页面大小,即一页显示多少条新闻</param>
        
/// <returns></returns>
        public void MakeHtmlListFile(string strMFile,int pageSize)
         {
            
try
             {
                
//创建HTML的编码
                 Encoding ed = Encoding.GetEncoding("gb2312");

                //获取存放模板的地址--相对路径
                string strPath = System.Web.HttpContext.Current.Server.MapPath("../htmllist/");

                //删除新闻列表根目录下的所有文件
                 DirectoryInfo di = new DirectoryInfo(strPath);
                
//获得文件   
                 FileInfo[] fi = di.GetFiles();
                
//删除
                foreach (FileInfo fiTemp in fi)
                 {
                     fiTemp.Delete();
                 }   
           
//读取模板文件
                string strTemp = System.Web.HttpContext.Current.Server.MapPath("../Module/" + strMFile);
                
//读取对象
                 StreamReader sr = null;
                
//写入对象
                 StreamWriter sw = null;
                
string str = "";
                
//读取模板文件
                 sr = new StreamReader(strTemp, ed);
                
//读到最后一行,赋值给STR
                 str = sr.ReadToEnd();
                //此类来自隐藏了的项目空间
                 TB_logic tb_logic
= new TB_logic();

                //DataSet ds = tb_logic.FindMessage();
                
//获取新闻列表条数,只不过是执行一个存储过程罢了,本人团队用存储过程习惯了,呵呵
                int nCount = tb_logic.FindMessage("dt_GetNewsList").Tables[0].Rows.Count;

                //int nPage = nCount > pageSize ? nCount / pageSize : 1;
                
//获取新闻列表页数,三元表达式的嵌套,应该有更好的写法,经过了基本的测试,从逻辑上来说应该是Ok的
                int nPage = nCount > pageSize ? (nCount % pageSize == 0 ? nCount / pageSize : nCount / pageSize + 1) : 1;

                //生成新闻列表页面
                string sql = "select NEW_ID,NEW_TITLE,convert(nvarchar(10),NEW_RELEASE,121) SNEW_RELEASE from dbo.NEWS_MEDIUM order by NEW_ID desc";
                
//string strList = string.Empty;
                 StringBuilder sbList = new StringBuilder();

                 DataSet ds = new DataSet();
                
                
//分页显示新闻列表
                for (int nI = 1; nI <= nPage; nI++)
                 {

                    //执行分页的存储过程,具体存储过程在另外一篇随笔中,执行存储过程代码不再详述
                     ds = tb_logic.DivPageNewsList(sql, pageSize, nI);
                    
//int nL = ds.Tables[1].Rows.Count;
                    
//显示新闻标题,并加入相应链接
                     sbList.Append("<ul>");
                    
for (int nL = 0; nL < ds.Tables[1].Rows.Count; nL++)
                     {
                        
//strList = strList
                         sbList.Append("<li><SPAN>" + ds.Tables[1].Rows[nL]["SNEW_RELEASE"].ToString() + "</SPAN> <A   href=../html/" + ds.Tables[1].Rows[nL]["NEW_ID"].ToString() + ".html>" + ds.Tables[1].Rows[nL]["NEW_TITLE"].ToString() + "</A></li>");
                     }

                     sbList.Append("</ul><br>");

                    //显示分页导航
                    for (int nP = 1; nP <= nPage; nP++)
                     {
                        
if(nP == nI)//本页面不加导航链接
                         {
                             sbList.Append(nP.ToString()
+ "&nbsp;");
                         }
                        
else
                         {
                            
//string strL = "<a href=newsList_" + nP.ToString() + ".html>" + nP.ToString() + "</a>&nbsp;";
                             sbList.Append("<a href=newsList_" + nP.ToString() + ".html>" + nP.ToString() + "</a>&nbsp;");
                         }
                     }

                    //自动生成HTML文件名
                    string htmlfilename = strPath +  "newsList_" + nI.ToString() + ".html";

                    //从文本框里得到的值替换模板里的值
                    string strAll = str.Replace("NewsList", sbList.ToString());
                    
                    
//清空新闻列表内容
                     sbList.Length = 0;

                    //开始写入创建的HTML文件
                     sw = new StreamWriter(htmlfilename, false, ed);
                     sw.Write(strAll);
                     sw.Flush();
                     sw.Close();
                 }                
             }
            
catch
             {
                
throw;
             }            
            
//return true;
         }
     }
}

抱歉!评论已关闭.