ASP.NET(C#)--Repeater中生成“序号”列&&给Repeater控件里添加序号的5种方法

原文地址:

http://www.cnblogs.com/luzx/archive/2011/05/09/2041280.html

需求介绍:在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; width: 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"%>'
                    οnmοuseοver="this.style.background='#ddeeff'" οnmοuseοut="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();
        }
    }

Repeater是我们经常用的一个显示数据集的数据控件,经常我们希望在数据前显示数据的序号,那么我们该怎么为Repeater控件添加序号呢?下面编辑为大家介绍几种常用的为Repeater控件添加序号的方法:

方法一:
利用Container.ItemIndex属性,代码如下:

<Itemtemplate >
<%# Container.ItemIndex + 1% >
</Itemtemplate >

方法二:
利用Repeater的Items.Count属性,代码如下:

<Itemtemplate >
<%# this.Repeater.Items.Count + 1% >
</Itemtemplate >

方法三:
利用JS在前台给一个Label标签赋值,代码如下:

在.aspx中添加一个Label控件,用来显示序号。

<Label ID="label" runat="server" ></Label >

JS代码:

<body οnlοad="show()" >
<Script Language="javascript" >
function show()
{
var bj = document.all.tags("Label经解释后生成的Html标签");
for (i=0;i<obj.length;i++)
{
document.all["Label经解释后生成的Html标签"][i].innerHTML=i+1;
}
}
</script >

该方法需注意的地方比较多,不推荐使用。
 
 方法四:在后台中实现,代码如下:
在.aspx里添加一个Label控件

<asp:Label id="Label1" runat="server" ></asp:Label >

在.cs里添加代码:

void InitializeComponent()
{   
   this.Repeater1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
   this.Load += new System.EventHandler(this.Page_Load);
}
void Repeater1_ItemDataBound(object source, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
    ((Label)e.Item.FindControl("Label1")).Text = Convert.ToString(e.Item.ItemIndex + 1);
   }
}


方法五:为Repeater控件添加连续的编号,翻页后序号接前上一页的序号,代码如下:

<%# Container.ItemIndex + 1 + (this.AspNetPager.CurrentPageIndex -1)*每页的数据数量 >

http://www.yc-edu.org/netpeixun/2558.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值