设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 328|回复: 3
打印 上一主题 下一主题

如何动态的生成Asp.net前端的显示

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-16 21:02:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在msn上有人跟我说用asp.net做网站不想用控件了,我很奇怪。继续探讨下去发现原来他要解决的事情是前端页面的
  控件数量是在运行时才能决定的,而他一直认为那些控件只能拖到页面上去。我想了想,觉得还是有必要把如何在前端页面上动
  态生成控件的方法写一下,大牛们可以走了,这个就是给不知道的兄弟们大概的说一下。
  在前端代码中,可能我们看到只是像div ,span 这样的标签形成的布局层次。实际上,在后台,.net也给我们做好了控制层
  次。这样说比较抽象,下面来看一个小例子说明吧:
    <div id="div1" runat="server">
      <div id="subdiv1">
       ......
      </div>
      <div id="subdiv2">
       .....
      </div>
    <div>
  在上面的代码中,我们看到的是三个div形成的一个布局层次关系,div1包含两个子div,看起来只能是固定如此的布局。实际
  上在后台,.net会为div1做一个控制容器,在这个容器里面把两个子div加入进去,我们可以在后台找到容器里面找到他们并且进行
  处理。这个控制容器也有分层的概念,div1的控制容器包含subdiv1,subdiv2,两个子div也有自己的控制容器。对于所有的块级元素,
  都会属于自己的控制容器(关于块级元素和行内级元素的概念,可以自己上网上找找,属于html中的概念).这个控制容器,我们在后
  台可以通过 this.Controls取到。
  现在我们来做一个例子,来示意一个怎样动态的从数据库中读取数据生成一个导航栏,这个导航栏我用无序列表来实现(如何变
  成导航栏自己参考html的内容)。首先来看前端代码:
<div>
<ul id="ul" runat="server">
</ul>
  
</div>
  可以看到前端的代码非常简单,只是加了一个无序列表的标签<ul>,但是必须声明这个列表运行在服务器端的,否则.net不会维护
  它的控制层次,我们也没有办法在后台对他进行控制,下面来看后台代码怎样动态的添加列表元素:
DataTable t = new DataTable();

da.Fill(t);
foreach (DataRow row in t.Rows)
{
     Label label = new Label();
     label.Text = row["room_type"].ToString();
     ul.Controls.Add(new LiteralControl("<li>"));
     ul.Controls.Add(label);
     ul.Controls.Add(new LiteralControl("</li>"));
}
  看一下后台的代码也很简单,首先从数据库里面提取出需要作为导航栏内容的表。对于表中的每一个元素,我们创建一个静态
  文本框,将需要显示到导航栏中的内容写入到静态文本框中,然后调用无序列表控制容器的增加控制元素方法,就可以将列表项添加
  到无序列表中了。对于在其他的块级元素中动态添加控件方法,完全可以参照上面的来做。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 22:43 , Processed in 0.105100 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表