如何使用ASP.NET中的转发器或datalist控件动态显示多个表中的记录?

时间:2014-07-24 10:51:56

标签: asp.net c#-3.0 repeater datalist

我想要做的是显示我在不同HTML表格中的数据表中获得的记录。数据表中的记录有3列,最多可以有6条记录。

我从数据库获取的数据表如下:

Name   Age
-----------  
XYZ    30

XY1    31

XY2    32

XY3    33 

我想以下列方式显示记录:

Name   Age   Name   Age
-----------------------
XYZ    30    XY1    31

Name   Age   Name   Age
-----------------------     
XY2    32    XY3    33


Total Strength of employees : 4

我目前正在做的事情如下(尽管这不是我想要的,但已经尝试过了):

<asp:Repeater ID="RptNCode" runat="server" OnItemCommand="RptNcode_ItemCommand" 
  OnItemDataBound="RptNCode_ItemDataBound" >
    <HeaderTemplate>
    <tr style="background-color: #507CD1; color: 
    White; font-weight: bold; text-align: center; height: 20px">
            <td style="color: White;">
                Sr.No
            </td>
            <td style="color: White; text-align: left">
                Name
            </td>
            <td style="color: White; text-align: right">
                 Age 
            </td>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
   <tr style="background-color: #ffffff; height: 20px; font-family: Arial">

            <td align="left" style="font-size: 15;">
                <asp:LinkButton ID="lnkNCode" ForeColor="#336699" runat="server" Text='<%# Eval("Name") %>'
                    CommandArgument='<%# Eval("Name") %>' CommandName="NCode"></asp:LinkButton>
            </td>
            <td align="center" style="font-size: 15; text-align: right;">
                <%#  Eval("Age")%>

            </td>
        </tr>
    </ItemTemplate>
    <AlternatingItemTemplate>
        <tr style="background-color: #ffffff; height: 20px; font-family: Arial">

            <td align="left" style="font-size: 15;">
                <asp:LinkButton ID="lnkNCode" ForeColor="#336699" runat="server" Text='<%# Eval("Name") %>'
                    CommandArgument='<%# Eval("Name") %>' CommandName="NCode"></asp:LinkButton>
            </td>
            <td align="center" style="font-size: 15; text-align: right;">
                <%#  Eval("Age")%>

            </td>
        </tr>
    </AlternatingItemTemplate>
    <FooterTemplate>
        <tr>

            <td align="right" height="40px">
                <asp:Label ID="lblTotal" runat="server" Font-Bold="true" ForeColor="#336699"></asp:Label>

            </td>
        </tr>
    </FooterTemplate>
</asp:Repeater>

我知道这不正确,但这是我到目前为止所做的。我想做什么或不做?

感谢。

1 个答案:

答案 0 :(得分:1)

你实际上与现在的情况非常接近。诀窍是关闭表行。尝试更像这样的东西:

<asp:Repeater ID="RptNCode" runat="server"
    OnItemCommand="RptNcode_ItemCommand" 
    OnItemDataBound="RptNCode_ItemDataBound">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                Name
            </td>
            <td>
                Age
            </td>
            <td>
                Name
            </td>
            <td>
                Age
            </td>
        </tr>
        <tr>
            <td>
                <%# Eval("Name") %>
            </td>
            <td>
                <%# Eval("Age") %>
            </td>
    </ItemTemplate>
    <AlternatingItemTemplate>                
            <td>
                <%# Eval("Name") %>
            </td>
            <td>
                <%# Eval("Age") %>
            </td>
        </tr>
    </AlternatingItemTemplate>            
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>

注意AlternatingItemTemplate如何保持同一个表行继续另外两列,将下一条记录放在同一行的数据表中。然后当它再次到达ItemTemplate时,它会添加另一行标题信息并重新开始。