zoukankan      html  css  js  c++  java
  • 动态创建服务器控件,获取HTML输出(用于生成静态文件,简化页面,简化编程等)

    写了一个来测试,还好上一个项目中wnh写的一段代码供参考,不然今天靠一个手机无线上网是搞不定的。

    下午快下班的时候想到这个,跟z和q说了一下,也不知他们听懂没我说的什么意思。回来测试,居然成功了 :)
    倒是先被ItemTemplate卡住了,动态创建的DataList,哪来ItemTemplate呢?还好用Item.Controls.Add搞定。

    准备用在静态化上,DataGrid/DataList/Repeater都可以用这样的方式使用。省时省力结构还清晰,越来越喜欢DataBind了——这句话至开始使用.NET已经说了很多次了哦——只可惜我那本来就不熟练的写算法写循环控制,又要更加退化了。

    理论上(还没有仔细思考,做出来这个就懒了,先不想思考问题了),还可以用来实现N级的DataList嵌套吧。

     1        private void CreateDataList()
     2        {
     3            sql = "SELECT Build_Id, Name FROM House_Build";
     4            dt = new DataTable();
     5            da = new SqlDataAdapter(sql, conn);
     6            da.Fill(dt);
     7            da.Dispose();
     8            
     9            DataList dl = new DataList();
    10            dl.RepeatColumns = 3;
    11            dl.RepeatLayout = RepeatLayout.Table;
    12            dl.DataSource = dt;
    13            dl.ItemDataBound += new DataListItemEventHandler(this.BindDataList);
    14            dl.DataBind();
    15            dt.Dispose();
    16            
    17
    18            string strHtml;
    19            System.IO.StringWriter sw = new System.IO.StringWriter();
    20            HtmlTextWriter htw = new HtmlTextWriter(sw);
    21            dl.RenderControl(htw);
    22            strHtml = sw.ToString();
    23            Response.Write(strHtml);
    24        }

    25
    26
    27        protected void BindDataList(object sender, DataListItemEventArgs e)
    28        {
    29            if (e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    30            {
    31                DataRowView thisRow = (DataRowView) e.Item.DataItem;
    32
    33                if (thisRow!=null)
    34                {
    35                    Literal lit = new Literal();
    36                    lit.Text = string.Format("<div>{0}</div>\n<p>{1}</p>", thisRow["Build_Id"], thisRow["Name"]);
    37                    e.Item.Controls.Add(lit);
    38                }

    39            }

    40        }
     /* ReCreate */
  • 相关阅读:
    KVC之-setValue:forKey:方法实现原理与验证
    李洪强iOS开发之iOS社区收集
    跟着百度学PHP[15]-会话控制session的工作机制
    代码审计学习之文件操作漏洞
    中间人攻击——ARP欺骗的原理、实战及防御
    跟着百度学PHP[14]-PDO的预处理语句2
    跟着百度学PHP[14]-PDO的预处理语句1
    跟着百度学PHP[14]-PDO之Mysql的事务处理2
    跟着百度学PHP[14]-PDO之Mysql的事务处理1
    跟着百度学PHP[14]-PDO的错误处理模式&PDO执行SQL
  • 原文地址:https://www.cnblogs.com/nonlyli/p/615439.html
Copyright © 2011-2022 走看看