Navicy's .NET

天将降大任于斯人也,必先苦其心智,劳其筋骨,饿其体肤,空乏其身......

统计

常用链接

积分与排名

网站链接

阅读排行榜

评论排行榜

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


内容
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              getreturn rowscount;}
 5              setthis.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>

posted on 2005-06-25 16:22 Navicy 阅读(3141) 评论(12)  编辑 收藏 网摘 所属分类: ASP.NET

评论

#1楼 2005-08-10 15:31 藏族人民[未注册用户]

没有Repeater的编号嘛。   回复  引用    

#2楼 2005-10-14 15:39 天涯兔[未注册用户]

采用MasterPagers,如何在ascx文件中的DataList增加自动编号列?   回复  引用    

#3楼 2005-10-14 15:49 天涯兔[未注册用户]

搞定,可以采用Container.ItemIndex,不能采用第二种方法   回复  引用    

#4楼 2005-10-21 22:32 grantmei[未注册用户]

太假了,你哦!   回复  引用    

#5楼 2005-11-23 14:34 光说datagrid 那datalist 又怎么实现啊?????????[未注册用户]

光说datagrid 那datalist 又怎么实现啊?????????   回复  引用    

#6楼 2006-08-03 14:19 Lowkey

@藏族人民

Repeater 也可以用<%# Container.ItemIndex + 1 %> .
自己不试怎么知道
  回复  引用    

#7楼 2006-11-04 09:17 地老鼠[未注册用户]

在Repeater中如何解决,每页序号都是从1开始的问题?   回复  引用    

#8楼 2007-11-14 15:08 蒋磊[未注册用户]

非常感谢,继续关注   回复  引用    

#9楼 2008-06-03 18:55 张跃      

不错,学习了,一会儿再把我写的那个重新编辑一下,把楼主的内容也添加进去   回复  引用  查看    

#10楼 2008-09-16 17:37 123487654ewfedqwef[未注册用户]

我在datagrid中添加自動編號時候
如果我的itemdatabound事件有些代碼的話,那么自動編號就無法完成,你們是不是這樣?
  回复  引用    

#11楼 2008-11-14 14:17 南梦[未注册用户]

不错不错...REPEATER也适用..哈哈...   回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 181065




相关文章:

相关链接: