CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

如何把数据这样自由的显示出来?

楼主parsely(林琳)2003-09-04 18:27:24 在 .NET技术 / ASP.NET 提问

我想实现象易趣的功能,把从数据库中提取出来的数据这样显示出来:  
   
   
  ------------------------------------------------------------------  
  笔记本电脑及配件   台式电脑   掌上电脑/PDA   电脑配件   电脑外设   服务器/工作站/网络     办公设备   电脑软件   耗材   游戏机及配件   电脑网络类书籍   网络游戏/帐号   电脑产品维修/租赁/收购   全新台式整机  
   
  ------------------------------------------------------------------  
   
  而不是在控件的表格中象这样规规矩矩的显示出来  
   
  笔记本电脑及配件             台式电脑               掌上电脑/PDA    
  电脑配件                             电脑外设               服务器/工作站/网络      
  办公设备   电脑软件           耗材                       游戏机及配件   电脑网络类书籍   网络游戏帐号   电脑产品维修           租赁/收购             全新台式整机  
   
  ---------------------------------------------------------------------  
   
   
   
  如下是我把数据放在了   datalist   中了,但是该如何那样的显示出来呢?  
  public   void   rc_gzjl_info_BindGrid()  
  {  
  try  
  {  
  string   strconn   =   ConfigurationSettings.AppSettings["SqlConnectionString"];  
  SqlConnection   myconn=new   SqlConnection(strconn);  
  myconn.Open();  
  SqlDataAdapter   myAdapter=new   SqlDataAdapter("select   *   from   分类,myconn);  
  DataSet   ds=new   DataSet();  
  myAdapter.Fill(ds,"分类");  
  this.rc_gzjl_datalist.DataSource=ds.Tables["分类"].DefaultView;  
  this.rc_gzjl_datalist.DataBind();  
  myconn.Close();  
  }  
  catch(Exception)  
  {  
   
  }  
  }  
  问题点数:20、回复次数:10Top

1 楼parsely(林琳)回复于 2003-09-04 18:30:42 得分 0

上面的有点错位,应该这样:  
   
   
  ------------------------------------------------------------------------  
   
  笔记本电脑及配件                         台式电脑                             掌上电脑/PDA          
  电脑配件                                         电脑外设                             服务器/工作站/网络              
  办公设备     电脑软件                     耗材                                     网络游戏帐  
  电脑产品维修                                 租赁/收购                           全新台式整机      
   
  ----------------------------------------------------------------------------  
  Top

2 楼JGTM2000(铁马小子)回复于 2003-09-04 18:33:30 得分 0

不要看着浏览器显示的结果去想怎么写代码,而应该看着对应于结果的HTML代码入手。也许一个String.Join就解决你的问题了。Top

3 楼llm2002()回复于 2003-09-04 18:34:01 得分 0

"笔记本电脑及配件   台式电脑   掌上电脑/PDA   电脑配件   电脑外设   服务器/工作站/网络     办公设备   电脑软件   耗材   游戏机及配件   电脑网络类书籍   网络游戏/帐号   电脑产品维修/租赁/收购   全新台式整机"  
  是一个字段的吗?Top

4 楼parsely(林琳)回复于 2003-09-04 18:50:42 得分 0

To:llm2002()    
   
  是啊,都是     表“分类”中字段“分类名称”的名字。  
   
  就是让它们紧凑的显示出来。  
   
  Top

5 楼OliveT(八哥·兔)回复于 2003-09-04 20:01:06 得分 0

不要使用DG,DL和Reapter,使用多个超链接标签好了Top

6 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2003-09-04 20:22:30 得分 10

楼上的兄弟,使用Repeater很方便啊!象这样:  
   
  <asp:Repeater   runat="server"   id="Repeater1">  
  <a   href='category.aspx?id=<%#DataBinder.Eval(Container.DataItem,"编号")%>'><%#DataBinder.Eval(Container.DataItem,"分类名称")%></a>&nbsp;  
  </asp:Repeater>  
   
  --------------------  
  后台代码:  
   
  SqlConnection   conn=...//省略  
  SqlDataAdapter   adapter=new   SqlDataAdapter("select   编号,分类名称   from   分类",conn);  
  DataTable   table=new   DataTable();  
  adapter.Fill(table);  
  Repeater1.DataSource=table;  
  Repeater1.DataBind();Top

7 楼JGTM2000(铁马小子)回复于 2003-09-04 20:50:55 得分 10

用Repeater是最合适也最容易的,引发数据绑定只需要写:  
   
  repeater.DataSource   =   yourDataTable;  
  repeater.DataBind();  
   
  (具体参见陕北吴旗娃给出的后台代码)  
   
  同数据源绑定时,repeater会为DataTable中的每一行创建一个列表项。接下来你为repeater的ItemCreated事件写如下代码:  
   
  private   void   repeater_ItemCreated(object   sender,   RepeaterItemEventArgs   e)  
  {  
  e.Item.Controls.Add(new   LiteralControl("·"));  
   
  DataRowView   row   =   (DataRowView)e.Item.DataItem;  
  string   url   =   "#"+row["id"];  
  string   text   =   row["分类名称"];  
   
  HyperLink   link   =   new   HyperLink();  
  link.NavigateUrl   =   url;  
  link.Text   =   text;  
   
  e.Item.Controls.Add(link);  
  }  
   
  这段程序为每一个绑定生成的列表项生成内容,当然,你也可以像陕北吴旗娃那样在ASPX中给Repeater写ItemTemplate(结合数据绑定语法),不过这样会有一些性能代价(因为DataBinder.Eval使用Reflection求值,效率当然不如强类型访问,对于性能要求高的应用程序还是尽量避免的好)。  
   
  另外,我开始提到的String.Join方法对于用连接符连接若干字符串是很有用的,比如说:  
  String.Join("·",   new   string[]   {"a","b","c"})即得到a·b·c。结合合适的HTML代码也可以解决很多看上去很复杂的问题。Top

8 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2003-09-04 22:44:22 得分 0

对不起,我一时粗心竟把<ItemTemplate>给丢了!:)Top

9 楼JGTM2000(铁马小子)回复于 2003-09-05 01:43:35 得分 0

如果使用ItemCreated事件处理程序来动态的控制每个列表项的生成的话,Repeater控件里面可以是空的(即不需要包括ItemTemplate在内的任何模版)。Top

10 楼JGTM2000(铁马小子)回复于 2003-09-08 01:52:08 得分 0

这是后来我给楼主写去的一个单文件测试页面,将下面的内容拷贝到一个.aspx文件中放到IIS虚拟目录下即可访问,供大家参考:  
   
  <%@Page   Language="C#"   AutoEventWireup="true"   %>  
   
  <script   runat="server">  
   
  void   Page_Load()  
  {  
      myRepeater.DataSource   =   new   string[]   {"one","two","three"};  
      myRepeater.DataBind();  
  }  
   
  void   DoWhenItemCreated(object   sender,   RepeaterItemEventArgs   e)  
  {  
      e.Item.Controls.Add(new   LiteralControl("&#183;"));  
   
      HyperLink   link   =   new   HyperLink();  
   
      string   url   =   "anotherPage.aspx?"   +   (string)e.Item.DataItem;  
      string   text   =   (string)e.Item.DataItem;  
   
      link.NavigateUrl   =   url;  
      link.Text   =   text;  
   
      e.Item.Controls.Add(link);  
  }  
   
  </script>  
  <html>  
  <body   style="font-family:   Verdana">  
      <center>  
          <asp:Repeater   runat="server"   id="myRepeater"  
                                      OnItemCreated="DoWhenItemCreated"   />  
      </center>  
  </body>  
  </html>Top

相关问题

  • 如何显示数据
  • 如何显示数据库?
  • asp如何分页显示数据?
  • 这些数据如何显示?
  • 如何把数据分页显示……
  • 如何在dbgrid中显示数据!!!!!
  • 如何让数据呈两列显示?
  • 如何分段显示数据?
  • CrystalReport中如何动态显示数据。。。?
  • 日期数据如何显示问题?/?????

关键词

  • 电脑
  • 代码
  • 数据
  • 租赁
  • 网络游戏
  • 掌上电脑
  • 维修
  • 服务器
  • 网络类
  • 收购

得分解答快速导航

  • 帖主:parsely
  • webdiyer
  • JGTM2000

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo