注册 登录
编程论坛 ASP.NET技术论坛

这种分类显示效果怎么做?

青格儿 发布于 2008-05-12 15:55, 1532 次点击
怎么把SQL查出来的分类显示在网页上就像百度知道里最左面(问题分类)那样显示出来?也就是这种显示方式如何控制
如果我表达得不清楚,如下图所示:
只有本站会员才能查看附件,请 登录
15 回复
#2
jielig12008-05-12 16:00
用Datalist 套Datalist就行了的。
#3
hebingbing2008-05-12 17:42
ls正解……
#4
青格儿2008-05-13 13:32
谢谢二楼的提示,再问下:
取是取出来了,怎么让这列数据显示在一行,并用空格隔开(上图二级分类的显示只显示前三行的数据,后而的显示为...,而且它们显示在一行上)。简单来说就是怎么让数据库里的某列显示在一行里
#5
hebingbing2008-05-13 15:18
RepeatDirection="Horizontal"
#6
青格儿2008-05-14 10:51
谢谢楼上的朋友。效果基本上实现了!可是截取那个效果怎么做。我做过显示数据库里一个单元格的数据显示(前取前几个字,后面的显示为...)可是这种一列数据显示在一行,怎么截取呢?
#7
hebingbing2008-05-14 11:08
我觉得它的这其实也不是什么截取,还是在dataitembound事件中给datalist加了一条数据罢了……
#8
kevintang2008-05-14 11:09
我靠!来晚了!
#9
青格儿2008-05-14 11:32
我用select top 3 * from QueChildType
这个取了三条数据,然后在Datalist的模板列里加了个...
结果出来的是:
 电脑/网络
硬件 ...     反病毒 ...     操作系统 ...
怎么每个都加了...
#10
青格儿2008-05-14 11:53
[bo]以下是引用 [un]hebingbing[/un] 在 2008-5-14 11:08 的发言:[/bo]

我觉得它的这其实也不是什么截取,还是在dataitembound事件中给datalist加了一条数据罢了……



不太明白你的意思。
我用表格控制了下显示,结果出来是这样:
只有本站会员才能查看附件,请 登录

好像是因为字比较大而...也当字符来显示了,结果...没有居底显示。与字不协调
#11
hebingbing2008-05-14 12:46
你用表格控制是怎么样控制的?
想不出来表格怎么样可以控制……
呵呵……
说出来学习学习……
我刚才给你说的简单的说就是在datalist绑定的时候再加上自定义的一列……
就像dropdownlist那样绑定完了再给它加上自定义的一项……
我刚才试了试,没有做出来……
不过我用了改属性的方法做出来这效果……
在第二个datalist的ItemDataBound事件中改
 protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        int sl = DataList1.Items.Count;
        if (sl == 4)
        {
            ((LinkButton)(e.Item.FindControl("LinkButton1"))).Text = "……";
        }

    }
对了,还有我这样久一直把青妹妹当成了男的……
呵呵……
青妹妹可以试试能不能加入自定义的一列……
要是不行其实改属性也应该可以吧……
呵呵……
#12
hebingbing2008-05-14 12:47
对了我是top了5……
#13
青格儿2008-05-14 13:56
呵呵,谢谢楼上的朋友,你现在做版主了啊。我再用你的办法试试!
呵呵,我哪里看起来像男生呢?名字也不像啊,你是怎么会认为我是男生呢?
我是在在第一个Datalist里放一个表格,1行2列,1列里放一个datalist
另一列里放一个链接。也就是"..."的链接。

<asp:DataList ID="DataList1" runat="server"   OnItemDataBound="DataList1_ItemDataBound" >
                        <ItemTemplate>
                           
                             
                                <table style="position: relative">
                                    <tr>
                                        <td colspan="2" rowspan="2">
                                           <a href="QuestionType.aspx"><%#DataBinder.Eval(Container.DataItem,"TypeName") %></a>
                                           <asp:DataList ID="DataList2" runat="server" RepeatDirection="Horizontal" >
                                <ItemTemplate>
                                    <asp:Label ID="Label2" runat="server" Visible=False Text='<%# DataBinder.Eval(Container.DataItem,"ChildName") %>'></asp:Label>
                                    <a href="QuestionType.aspx"><%#DataBinder.Eval(Container.DataItem,"ChildName") %></a>&nbsp
                                   
                                </ItemTemplate>
                            </asp:DataList>
                                           <asp:Label id="lblTypeId" runat="server" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem,"TypeID") %>' style="position: relative" ></asp:Label></td>
                                        <td colspan="1" rowspan="2" style="text-align: center">
                                        <a href ="QuestionType.aspx">...</a>
                                        </td>
                                    </tr>
                                    <tr>
                                    </tr>
                                </table>
                           
                        </ItemTemplate>
                    </asp:DataList>
#14
hebingbing2008-05-14 14:10
主要是搞it的女的少,所以要是看见搞it的一般就默认是男的……
呵呵……
不过现在又多了个青妹妹……
呵呵……
#15
青格儿2008-05-14 14:42
我明白你的意思。
在第二个datalist的ItemDataBind事件里写:
protected void DataList2_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        int sl = DataList1.Items.Count;
//这里不应该是datalist1吧!如果是的话,那出来的应是第四行的所在分类就成了下面的显示
电子/数码
诺基亚...     三星 ...     苹果 ...
按理说应是datalist2.items.count,但是程序找不到datalist1里的datalist2
        if (sl == 4)
        {
            ((LinkButton)(e.Item.FindControl("LinkButton1"))).Text = "……";
        }

    }

用上面的代码来的效果是这样的:
只有本站会员才能查看附件,请 登录


[[it] 本帖最后由 青格儿 于 2008-5-14 14:46 编辑 [/it]]
#16
hebingbing2008-05-14 16:43
假如说你的第二个datalist要显示3条数据,完了之后就是“……”那么你就要在第二个datalist中select top 4……
然后
protected void DataList2_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        int sl = DataList2.Items.Count;
        if (sl == 3)
        {
            ((LinkButton)(e.Item.FindControl("LinkButton1"))).Text = "……";
//这里你还可以按照上面的方式修改它的url等属性
        }

    }
我在我的机子上试了,一切正常……
1