ASP.NET(C#)--Repeater中生成“序号”列

需求介绍:在Repeater(Table)中加入“序号”列,从1开始自增,步长为1。

思路:因为“序号”跟Repeater的行号有关,所以要在Repeater的ItemDataBound事件中输出“序号”的值。为方便给“序号”赋值,我们使用Label控件。

注意:Repeater的ItemIndex是从0开始的,而“序号”列是从1开始的,所以ItemIndex要加1。

前台代码如下图所示:

前台代码
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
            <HeaderTemplate>
                <table border="1" style="border-color: #000000; border-collapse: collapse;  100%;
                    text-align: center; word-spacing: normal; font-size: 13px;" cellpadding="5">
                    <tr height="20" style="background-color: #66CCFF; font-weight: bold;">
                        <td>
                            序号
                        </td>
                        <td>
                            合同号
                        </td>
                        <td>
                            设备名称
                        </td>
                        <td>
                            设备型号
                        </td>
                        <td>
                            数量
                        </td>
                        <td>
                            入库时间
                        </td>
                        <td>
                            操作
                        </td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr style='background-color: <%#(Container.ItemIndex%2==0)?"#eeeeee":"#ffffff"%>'
                    onmouseover="this.style.background='#ddeeff'" onmouseout="this.style.background='<%#(Container.ItemIndex%2==0)?"#eeeeee":"#ffffff"%>'">
                    <td>
                        <asp:Label ID="no" runat="server" Text=""></asp:Label>
                    </td>
                    <td>
                        <%# DataBinder.Eval(Container, "DataItem.contract_no")%>
                    </td>
                    <td>
                        <%# DataBinder.Eval(Container, "DataItem.assets_name")%>
                    </td>
                    <td>
                        <%# DataBinder.Eval(Container, "DataItem.assets_model")%>
                    </td>
                    <td>
                        <%# DataBinder.Eval(Container, "DataItem.assets_amount")%>
                    </td>
                    <td>
                        <%# DataBinder.Eval(Container, "DataItem.in_time")%>
                    </td>
                    <td>
                        <asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" NavigateUrl='<%#"storage_details.aspx?storage_id="+DataBinder.Eval(Container, "DataItem.ID") %>' Text="明细"></asp:HyperLink>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>

后台代码如下图所示:

后台代码
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Label lb_no = (Label)e.Item.FindControl("no");
            lb_no.Text = (1 + e.Item.ItemIndex).ToString();
        }
    }
原文地址:https://www.cnblogs.com/mengfff/p/4906769.html