当前位置:编程学习 > C#/ASP.NET >>

Repeater 如何显示一行两列

显示结果是这个样


财经信息 体育信息
新闻联播 最新新闻


显示格式像上面一样,请各位帮帮忙


--------------------编程问答-------------------- 上網隨便找個Repeater資料看看. --------------------编程问答-------------------- 这个控件不会生成多余的HTML代码,也就说等于是用HTML布局实现这样的排版了,可以用DIV……

<div style="width:100px">
<ul>
<Repeater> 
<li>名称</li>
</Repeater>
</ul>
</div>

应该就可以了吧…… --------------------编程问答-------------------- 在你循环的li里做样式就可以了; --------------------编程问答-------------------- repeater控件分成两列显示 
两列显示可以用DIV+CSS也可以用下面的方法

<table>
<asp:repeater id="myRepeater" runat="server">
<ItemTemplate>
   <tr>
    <td>
     第一列
    </td>
</ItemTemplate>
<AlternatingItemTemplate>
   <td>
    第二列
   </td>
   </tr>
</AlternatingItemTemplate>
</asp:repeater>
</table>

或者
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (i % 2 == 0)
    {
        e.Item.Controls.Add(new LiteralControl("</tr><tr>"));
    }
    i++;//每一条记录绑定的时候就会加1
}  --------------------编程问答-------------------- 供参考

<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Email")%>
</ItemTemplate>
<AlternatingItemTemplate>
<font style="color:red">
<%# DataBinder.Eval(Container.DataItem, "Email")%>
</font>
<br />
</AlternatingItemTemplate>
</asp:Repeater>




        this.Repeater1.DataSource = db.ExecuteDataset("SELECT TOP 10 Email FROM users").Tables[0];
        this.Repeater1.DataBind();
--------------------编程问答-------------------- 参考:
http://topic.csdn.net/u/20090617/15/75d6bc6a-8cf9-4ea6-bdf6-b06aa705ec56.html 


protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {  
            int i = e.Item.ItemIndex+1;
            //这个20是Repeater1显示的记录总数,有多少写多少,以跳出循环,否则最后会产生下面LiteralControl括号中的多余的
            if (i % 2 == 0 && i < 20) </LI><li>
            {
                //这里根据Repeater中是用tr td还是ul li实际填写
                e.Item.Controls.Add(new LiteralControl("</LI><li>")); 
            }
            i++;
        }

--------------------编程问答-------------------- 换datalist就行了,通过属性设置成几列都行,还可以设置按左右排显示。比repeater用法灵活、简单多了 --------------------编程问答--------------------

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {  
            int i = e.Item.ItemIndex+1;
            //这个20是Repeater1显示的记录总数,有多少写多少,以跳出循环,否则最后会产生下面LiteralControl括号中的多余的</LI><li>
            if (i % 2 == 0 && i < 20) 
            {
                //这里根据Repeater中是用tr td还是ul li实际填写
                e.Item.Controls.Add(new LiteralControl("</LI><li>")); 
            }
            i++;
        }

--------------------编程问答-------------------- datalist  --------------------编程问答-------------------- 设置属性: RepeatRedirect=Horizontal  --------------------编程问答-------------------- --------------------编程问答-------------------- <asp:Repeater ID="Repeater1" runat="server">
    <HeaderTemplate>
    <table>
    </HeaderTemplate>
    <ItemTemplate>
    <tr><td>11</td><td>22</td></tr>
    </ItemTemplate>
    <FooterTemplate>
    </table>
    </FooterTemplate>
    </asp:Repeater> --------------------编程问答-------------------- repeater跟table和div结合来用吧 --------------------编程问答-------------------- 用div控制吧 --------------------编程问答--------------------

<table>
        <asp:Repeater ID="Repeater1" runat="server"  DataSourceID="SqlDataSource1">
        
        <ItemTemplate>
        <tr >
            <td>
                   <table>
                         <tr>
                             <td><%#Eval("CustomerID") %></td>
                             <td><%#Eval("CompanyName") %></td>
                         </tr>
                         
                        <tr>
                         <td><%#Eval("City") %></td>
                             <td><%#Eval("Phone") %></td>
                        </tr>
                   </table>
            </td>
        </tr>
        <tr>
             <td>
                <hr />
             </td>
        </tr>
        </ItemTemplate>
      
        </asp:Repeater>
        </table>
--------------------编程问答--------------------  RepeatRedirect=Horizontal 
  RepeatColumn=2  --------------------编程问答--------------------  <ItemTemplate>
          <%  if (i == 0)
                         {%>

         <tr>  <% } %>

            <td class="rank"><a href="xxx?id=/<%# Eval("ID") %>.html"  target="_blank"><%# Eval("qymc") %></a></td>
            <%if (i == 1)
                              {%>

            </tr>
             <%} i = (i + 1) % 2; %>

        
        </ItemTemplate>

.cs   public int i = 0; --------------------编程问答--------------------


<ItemTemplate> 
        <%  if (i == 0) 
                        {%> 

        <tr>  <% } %> 

            <td class="rank"> <a href="xxx?id=/ <%# Eval("ID") %>.html"  target="_blank"> <%# Eval("qymc") %> </a> </td> 
            <%if (i == 1) 
                              {%> 

            </tr> 
            <%} i = (i + 1) % 2; %> 

        
        </ItemTemplate> 

.cs  public int i = 0;
--------------------编程问答--------------------
引用 3 楼 me_loong 的回复:
在你循环的li里做样式就可以了;

都行啊 --------------------编程问答-------------------- 绑定就行了 --------------------编程问答-------------------- RepeatRedirect=Horizontal  // 方向
RepeatColumn=2 //列数
然后在itemTemplates 里面设置排版吧。 --------------------编程问答--------------------

    <asp:Repeater runat="server" ID="tt" DataSourceID="SqlDataSource1">
            <HeaderTemplate>
                <div id="content" width:400px;text-align:left;>
            </HeaderTemplate>
            <ItemTemplate>
                <div id="col" width:200px;float:left; >
                   <%#Eval("绑定") %>
                </div>               
            </ItemTemplate>
            <FooterTemplate>
                </div>
            </FooterTemplate>
        </asp:Repeater>













--------------------编程问答-------------------- 呃...刚才那个有点乱 重发一个:
<asp:Repeater runat="server" ID="tt">
            <HeaderTemplate>
                <div id="div" style="width:400px;text-align:left;">
            </HeaderTemplate>
            <ItemTemplate>
                <div id="col" style="width:200px;float:left;">
                <%#Eval("绑定") %>
                </div>               
            </ItemTemplate>
            <FooterTemplate>
                </div>
            </FooterTemplate>
</asp:Repeater>


--------------------编程问答-------------------- 弄个li吧,控制它的宽度就可以了 --------------------编程问答-------------------- 学习 --------------------编程问答--------------------
引用 24 楼 zifengshen1981 的回复:
弄个li吧,控制它的宽度就可以了


支持这个提意,方便快捷,div+css还是方便 --------------------编程问答-------------------- 大家多沟通一下下 --------------------编程问答-------------------- 难道放在重复体里面
<tr>
  <td>eval("字段1")</td>
  <td>eval("字段1")</td>
</tr>

这样不行吗?

<table>

</table>

分别放在头和尾不重复 --------------------编程问答-------------------- 供参考 

HTML code
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Email")%>
</ItemTemplate>
<AlternatingItemTemplate>
<font style="color:red">
<%# DataBinder.Eval(Container.DataItem, "Email")%>
</font>
<br />
</AlternatingItemTemplate>
</asp:Repeater>






C# code
        this.Repeater1.DataSource = db.ExecuteDataset("SELECT TOP 10 Email FROM users").Tables[0];
        this.Repeater1.DataBind();


--------------------编程问答-------------------- 四楼的对。。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,