• 给datalist加自动编号


    前些天想怎样给datalist加自动编号,考察了一下分页的原理,写了这个:

    在编辑模版(HTML)中加入列 <%# (num-1)*32+Container.ItemIndex + 1%>即可.

    说明:
    num 是 当前页码值,(自己定义)
    *32 是要乘以分页的行数,(如:每页32行)
    ItemIndex 是行索引
    + 1 是因为索引值从0开始的

    例如:

    <ItemTemplate>
    <td>
    <%# (num-1)*30+Container.ItemIndex + 1%>
    </td>
    <td>
    <%# DataBinder.Eval(Container.DataItem, "EmergencyContactName") %>
    </td>
    </ItemTemplate>

    另外还有一种:

    <%# this.DataList1.CurrentPageIndex * this.DataList1.PageSize + Container.ItemIndex + 1%>


    ----------------------------------------------------------------------------------------------------------------------

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

    内容
    1 Taye
    2 BOx
    3 Glass
    4 StarCraft

    一、正序
    A、AllowPaging=False情况下,使用以下方法就可以实现:


    B、AllowPaging="True"下,如果DataGrid支持分页则可以如下:

    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刚好是当前的序号]

    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>
  • 相关阅读:
    导入旧版本Android项目时的“Unable to resolve target ‘android
    eclipse打开文件目录
    ireport常见问题
    【技术贴】解决127.0.0.1和http://localhost均被拦截跳转到另一个网页
    【技术贴】SqlServer2008 R2 安装失败提示出现以下错误 服务 MSSQLSERVERO
    【技术贴】解决xp下Microsoft.SqlServer.Management.PSProvider.dll
    websphere性能设置和日常维护
    【技术贴】解决支付宝充值信用卡还款跳转到网上银行报错Error 404
    jQuery制作Facebook Timeline时间轴
    借助rownum中求Oracle表中前三名(三甲:状元榜眼探花)的方法(总计三种方法,以讲述rownum的使用为主)
  • 原文地址:https://www.cnblogs.com/wbcms/p/1265400.html
Copyright © 2020-2023  润新知