我想利用.net动态生成html页面,生成的页面却没datagrid的结果,而且汉字都是乱马,请是怎么回事?或者谁有更好的办法 生成html页面时将DataGrid的结果显示出来
public void GridBind()
{
string SQL2="Select * from news";
DataSet ds2=new DataSet();
SqlDataAdapter Adapter2=new SqlDataAdapter(SQL2,Conn);
Adapter2.Fill(ds2,"player2");
DataGrid1.DataSource=ds2.Tables["player2"].DefaultView;
DataGrid1.DataBind();
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
string filename=@"C:\Inetpub\wwwroot\test\Index.html";
FileStream fs = new FileStream( filename, FileMode.Create );
HtmlTextWriter _writer = new HtmlTextWriter( new StreamWriter( fs ) );
base.Render (_writer);
}

解决方案 »

  1.   

    给段代码看看,或许有启发
    无论如何,第一次访问时都得从数据库中读取数据。
    只要在这时将所有要输出的数据都保存至 HTML 文件即可,这一点用 Servlet 比较好做。
    即是如楼上所言的模板。
    如:
    public void doGet(HttpServletRequest req, HttpServletResponse res){
      //检测是否有新数据,如果没有,而且已经有缓存页面,跳
      if(/*...*/ && /*...*/){
        this.getServletContext().getRequestDispatcher("缓存页").forward(req, res);
        return;
      }
      //读取数据库中的数据
      //...
      //读取模板文件
      File f = new File("Template.html");
      StringBuffer buf = new StringBuffer();
      String line;
      BufferedReader br = new BufferedReader(new FileReader(f));
      while((line = br.readLine()) != null){
        buf.append(line);
      }
      String result;
      result = buf.replaceAll("模板中预留的字符串变量", 从数据库读出的数据);
      //...
      //保存缓存页
      FileOutputStream fos = new FileOutputStream(new File("缓存页"));
      fos.write(result.getBytes());
      fos.close();
      response.getWriter().print(result);
    }
      

  2.   

    汉字乱码是个老问题
    创建文件是注意,有些创建文件是只基于UTF-8的。创建文件之前应先检查您的页面的编码 。
    最后是读写时 的编码也要认清。
    FileMode.Create 
    HtmlTextWriter( new StreamWriter( fs ),... ...GB2312(OR UTF-8)... );
      

  3.   

    我也盼望有个好办法,想生成html页面有人有示例代码的发我一份 [email protected]包括有分页这样的,解决办法
      

  4.   

    不能生成datagrid的,只能你自己用循环画表格.汉字乱码的问题是因为编码的问题,保存的时候用
    System.Text.Encode.Encoding.Default
      

  5.   

    你确定要生成html文件吗?其实html也可以处理带参数的请求显示相应的数据库内容的。
      

  6.   

    void Page_Load(){
    ....Response.Charset="";
    this.EnableViewState =false;
    StringWriter tw=new StringWriter();
    HtmlTextWriter wt =new HtmlTextWriter(tw);string path=@"c:\test.htm";StreamWriter wter = File.CreateText(path);
    //输出所有信息
    this.RenderControl(wt);
    wter.Write(tw.ToString());
    //可以控制是否只显示DataGrid的数据
    //DataGrid1.RenderControl(wt);//可以控制是否输出出来全部信息
    Response.Write(tw.ToString());wter.Close();wt.Close();
    tw.Close();
    Response.End();}
      

  7.   

    检查下是不是编码格式有总是。
    一般是gb2312和utf-8