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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

    楼上的兄弟,使用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();
      

  6.   

    用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代码也可以解决很多看上去很复杂的问题。
      

  7.   

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

  8.   

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

  9.   

    这是后来我给楼主写去的一个单文件测试页面,将下面的内容拷贝到一个.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>