原文地址:
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