给Repeater、Datalist和Datagrid增加自动编号列

原创 2007年09月30日 18:06:00

内容
1
Taye
2
BOx
3
Glass
4
StarCraft

一、正序
A、AllowPaging=False情况下,使用以下方法就可以实现:
1<asp:DataGrid id="DataGrid1" runat="server">
2    <Columns>
3     <asp:TemplateColumn>
4      <ItemTemplate>
5       <%# Container.ItemIndex + 1%>
6      </ItemTemplate>
7     </asp:TemplateColumn>
8    </Columns>
9 </asp:DataGrid>

不过更有趣的方法是使用这个方法:

1<asp:DataGrid id="DataGrid1" runat="server">
2    <Columns>
3     <asp:TemplateColumn>
4      <ItemTemplate>
5       <%# this.DataGrid1.Items.Count + 1%>
6      </ItemTemplate>
7     </asp:TemplateColumn>
8    </Columns>
9</asp:DataGrid>

也许有些人会觉得很奇怪为什么Items.Count会这样,而不是出来全部总合,但如果你了解绑定的过程时就容易理解。[从上面来看就是在ItemCreated事件中进行绑定所以得到的Items.Count刚好是当前的序号]

B、AllowPaging="True"下,如果DataGrid支持分页则可以如下:
1<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">
2    <Columns>
3     <asp:TemplateColumn>
4      <ItemTemplate>
5       <%# this.DataGrid1.CurrentPageIndex * this.DataGrid1.PageSize + Container.ItemIndex + 1%>
6      </ItemTemplate>
7     </asp:TemplateColumn>
8    </Columns>
9</asp:DataGrid>

二、倒序的方法

序号
内容
4
Taye
3
BOx
2
Glass
1
StarCraft

由上面可以知道使用this.DataGrid1.Items.Count - Container.ItemIndex + 1方法是不可能实现的,得到值而且全会为1,分页的情况下更是一样.所以一开始我们就要取得数据源的行数:

 1private int rowscount = 0;
 2         protected int RowsCount
 3         {
 4              get{ return rowscount;}
 5              set{ this.rowscount = value; }
 6         }
 7     
 8         private void Page_Load(object sender, System.EventArgs e)
 9         {
10              // 在此处放置用户代码以初始化页面
11              if(!IsPostBack)
12                   this.BindData();
13         }
14         private void BindData()
15         {
16              SqlConnection cn = new SqlConnection("server=(local);database=NorthWind;uid=sa;pwd=");
17              string str=@"SELECT Employees.EmployeeID, Orders.EmployeeID
18                                 FROM Employees INNER JOIN
19                       Orders ON Employees.EmployeeID = Orders.EmployeeID ";
20              SqlDataAdapter sqlda = new SqlDataAdapter(str,cn);
21              DataSet ds = new DataSet();
22              sqlda.Fill(ds);
23              this.RowsCount = ds.Tables[0].Rows.Count;
24              this.DataGrid1.DataSource = ds;
25              this.DataGrid1.DataBind();
26}

1<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">
2                            <Columns>
3                                   <asp:TemplateColumn>
4                                          <ItemTemplate>
5                                                 <%# RowsCount - DataGrid1.CurrentPageIndex * DataGrid1.PageSize - Container.ItemIndex %>
6                                          </ItemTemplate>
7                                   </asp:TemplateColumn>
8                            </Columns>
9                     </asp:DataGrid>
 

粗略区分Gridview,repeater,datelist数据控件的差异

比较GridView Repeater DataList三种绑定控件、从灵活性和执行效率上综合考虑,Repeater当属第一。gridview功能最强大,但是对待嵌套绑定问题、疑难杂症,还是用Data...
  • jintougao
  • jintougao
  • 2014年01月24日 10:04
  • 1375

easyui从datagrid中添加数据到datalist中

效果图:功能:从数据表格中添加数据到数据列表中,添加时过滤重复的,可以删除数据列表中已添加的 test ...
  • u011370903
  • u011370903
  • 2016年12月19日 17:33
  • 2735

datagrid动态加载列(续)

之前有一篇博客写到了如何动态加载datagrid的列,上次只是介绍如何动态动态表头,并没有将数据添加到datagrid中,本次主要来说如何将数据库中的数据,动态添加到每一列中。      先说一下为...
  • u013038643
  • u013038643
  • 2016年04月24日 17:25
  • 1378

订餐系统——Gridview、Repeater和DataList 区别

上篇主要介绍了我们项目中用到的Gridview控件,而与该控件相关的还有两种:DataList 和repeater。之前也用过repeater控件,那么他们的主要区别是什么呢?    GridVie...
  • u013036278
  • u013036278
  • 2016年02月05日 10:49
  • 920

动态合并Repeater控件数据列

我们在网站上,创建一个网页,拉Repeater控件至网页: 去.aspx.cs为Repeater控件绑定数据,数据库表格,存储过程,以及连接数据库获取数据,在此不提供。 浏览效...
  • donghui6116773
  • donghui6116773
  • 2015年02月11日 15:20
  • 524

easyUI datagrid自定义添加列 (点击事件)

有列表 想添加一个操作列  类似删除之类的   ...
  • nnn_net
  • nnn_net
  • 2016年07月13日 15:42
  • 9789

数据库动态数据的处理+Repeater前台动态列的绑定

create or replace procedure sp_get_all_cj(p_xkkh in varchar2, p_cursor out sys_refcursor) is s...
  • starcuan
  • starcuan
  • 2014年03月12日 22:47
  • 1138

【datagrid】动态加载列

之前我们的项目在前台显示只需要把数据从数据库读出来进行显示就可以,datagrid的表头字段都是写死的,把数据往表里一扔,就基本没什么事儿了,结果客户前几天要求,其中一个字段不能是死的,应该是有多少项...
  • u013036688
  • u013036688
  • 2016年01月03日 16:32
  • 3167

GridView,Repeater增加自动序号列

有三种实现的方式, 第一种方式,直接在Aspx页面GridView模板列中.这种的缺点是到第二页分页时又重新开始了.                                         ...
  • u012401808
  • u012401808
  • 2013年12月24日 10:54
  • 686

WPF DataGrid使用 自动显示行号、全选、三级联动、拖拽

1.DataGrid的使用自动显示行号(修复删除行时行号显示不正确) dgTool.LoadingRow += new EventHandlerDataGridRowEventArgs (dgTool...
  • lanshengsheng2012
  • lanshengsheng2012
  • 2013年10月24日 10:46
  • 6395
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给Repeater、Datalist和Datagrid增加自动编号列
举报原因:
原因补充:

(最多只允许输入30个字)