我一个字段中将数据绑定datalist
只能横向或者纵向显示,我如何让这个字段显示4个数据后换行,在显示后面4条在换行?

解决方案 »

  1.   

    repeater?不好意思新手,可以说明白点吗?
      

  2.   

    你现在用的控件是 DataList 改用 repeater 控件 就可以实现你要的效果了
      

  3.   


    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Repeater ID="rp" runat="server">
        <HeaderTemplate><table width="450" cellspacing="3" cellpadding="2"></HeaderTemplate>
        <AlternatingItemTemplate>
        <%#Container.ItemIndex==0?"<tr>":""%>
        <td><%#Eval("Name") %></td>
        <%#(Container.ItemIndex + 1) % HorizontalCount == 0 ? "</tr><tr>" : ""%>
        </AlternatingItemTemplate>
        <ItemTemplate>
        <%#Container.ItemIndex==0?"<tr>":""%>
        <td><%#Eval("Name") %></td>
        <%#(Container.ItemIndex + 1) % HorizontalCount == 0 ? "</tr><tr>" : ""%>
        </ItemTemplate>    
        <FooterTemplate></tr></table></FooterTemplate>
        </asp:Repeater>
        </form>
    </body>
    </html>
    [code=C#]
    protected int HorizontalCount = 4; private DataTable GetDataSource() { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Name")); DataRow dr; for (int i = 0; i < 18; i++) { dr = dt.NewRow(); dr[0] = i; dt.Rows.Add(dr); } return dt; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { rp.DataSource = GetDataSource(); rp.DataBind(); } }[/code]
      

  4.   


    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Repeater ID="rp" runat="server">
        <HeaderTemplate><table width="450" cellspacing="3" cellpadding="2"></HeaderTemplate>
        <AlternatingItemTemplate>
        <%#Container.ItemIndex==0?"<tr>":""%>
        <td><%#Eval("Name") %></td>
        <%#(Container.ItemIndex + 1) % HorizontalCount == 0 ? "</tr><tr>" : ""%>
        </AlternatingItemTemplate>
        <ItemTemplate>
        <%#Container.ItemIndex==0?"<tr>":""%>
        <td><%#Eval("Name") %></td>
        <%#(Container.ItemIndex + 1) % HorizontalCount == 0 ? "</tr><tr>" : ""%>
        </ItemTemplate>    
        <FooterTemplate></tr></table></FooterTemplate>
        </asp:Repeater>
        </form>
    </body>
    </html>
    protected int HorizontalCount = 4;    private DataTable GetDataSource()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("Name"));
            DataRow dr;
            for (int i = 0; i < 18; i++)
            {
                dr = dt.NewRow();
                dr[0] = i;
                dt.Rows.Add(dr);
            }
            return dt;
        }    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                rp.DataSource = GetDataSource();
                rp.DataBind();                 
            }
        }
      

  5.   

    <%#(Container.ItemIndex + 1) % HorizontalCount == 0 ? "</tr><tr>" : ""%>
    中Container.ItemIndex + 1什么意思啊
    HorizontalCount 是什么,编译错误
      

  6.   

    RepeatDirection="Horizontal" RepeatColumns="4" 
      

  7.   

    protected int HorizontalCount = 4;需要在 .cs 文件中写Container.ItemIndex + 1 当前项的下标 +1
      

  8.   

    <td><%#Eval("Name") %></td>
    替换这个就可以了