zoukankan      html  css  js  c++  java
  • DataGrid自动编号之黄金版

    自动编号的用处很多,查看共有多少条数据,可以给你自动生成的Div,HTML控件进行命名,可以准确的操作这个控件,DataGrid、DataList、Repeater等绑定控件中都可以运用到,方便实用。

    一、正序

    序号 内容 
    1  a 
    2  b 
    3  c 
    4  d

    A、AllowPaging=False情况下

    <asp:DataGrid id="DataGrid1" runat="server">
        <Columns>
         <asp:TemplateColumn>
          <ItemTemplate>
           <%# Container.ItemIndex + 1%>
          </ItemTemplate>
         </asp:TemplateColumn>
        </Columns>
     </asp:DataGrid>
     

    推荐方法:
     <asp:DataGrid id="DataGrid1" runat="server">
        <Columns>
         <asp:TemplateColumn>
          <ItemTemplate>
           <%# this.DataGrid1.Items.Count + 1%>
          </ItemTemplate>
         </asp:TemplateColumn>
        </Columns>
     </asp:DataGrid>

    从上面来看就是在ItemCreated事件中进行绑定所以得到的Items.Count刚好是当前的序号]

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

    <asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">
        <Columns>
         <asp:TemplateColumn>
          <ItemTemplate>
           <%# this.DataGrid1.CurrentPageIndex * this.DataGrid1.PageSize + Container.ItemIndex + 1%>
          </ItemTemplate>
         </asp:TemplateColumn>
        </Columns>
    </asp:DataGrid>

    C、.cs文件后台生成

     private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    //当项被数据绑定到 DataGrid 控件后,将引发 ItemDataBound 事件
      if(e.Item.ItemIndex!=-1)
      {
      e.Item.Cells[0].Text=(this.DataGrid1.CurrentPageIndex*this.DataGrid1.PageSize+e.Item.ItemIndex+1).ToString();
      }
      }

    二、倒序的方法

    序号 内容 
    4  d
    3  c 
    2  b 
    1  a 

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

    .cs:
     
                 private int rowscount = 0;
             protected int RowsCount
             {

                  get{ return rowscount;}
                  set{ this.rowscount = value; }
             }   

             private void Page_Load(object sender, System.EventArgs e)
             {
                  if(!IsPostBack)
                       this.BindData(); // 数据绑定
             }

            .aspx:
     
    <asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">
                                <Columns>
                                       <asp:TemplateColumn>
                                              <ItemTemplate>
                                                     <%# RowsCount - DataGrid1.CurrentPageIndex * DataGrid1.PageSize - Container.ItemIndex %>
                                              </ItemTemplate>
                                       </asp:TemplateColumn>
                                </Columns>
                         </asp:DataGrid>
     当然如果是不是分页的情况一下更容易实现了.

    三 用法举例
    功能:自动生成Div的ID,并进行隐藏、显示操作。
    JS:

    function showsContent(objhref,pid)
    {
     var divid = 'div'+pid;
     var obj = document.getElementById(divid);
     if(obj.style.display == "none")
     {
      obj.style.display = "block";
      objhref.innerHTML = "隐藏信息"; 
     }
     else
     {
      obj.style.display = "none";
      objhref.innerHTML = "基本信息"; 
     }
    }
    Aspx:
    <asp:datalist id="DataList1" runat="server" Width="630px" DataKeyField="pid" ShowFooter="False" ShowHeader="False" RepeatDirection="Horizontal" RepeatColumns="1">
                <ItemTemplate>
                 <TABLE height="37" cellSpacing="0" cellPadding="0" width="630" align="center" border="0">
                  <TR>
                   <TD><span class="vlink" onclick='javascript:showsContent(this,<%#Container.ItemIndex%>)'>
                     基本信息</span></td>
                  </TR>
                  <TR>
                   <TD style="COLOR: #827f7f" colSpan="2" valign="top" align="left">
                    <DIV style="LINE-HEIGHT: 18px" id='div<%#Container.ItemIndex%>' style="display:none">&nbsp;<%#((DataRowView)Container.DataItem)["pName"]%><br>
                     &nbsp;Tag标签:<%#((DataRowView)Container.DataItem)["pContent"]%></DIV>
                   </TD>
                  </TR>
                  <TR>
                   <TD colSpan="2" bgcolor="#ececec" height="1" width="100%">
                   </TD>
                  </TR>
                 </TABLE>
                </ItemTemplate>
               </asp:datalist>

    .Cs:

     private void Page_Load(object sender, System.EventArgs e)
             {
                  if(!IsPostBack)
                       this.BindData(); // 数据绑定
             }

  • 相关阅读:
    [HNOI2002]营业额统计
    HDU 1374
    HDU 3345
    HDU 2089
    Graham扫描法
    Codeforces 1144D Deduction Queries 并查集
    Codeforces 916E Jamie and Tree 线段树
    Codeforces 1167F Scalar Queries 树状数组
    Codeforces 1167E Range Deleting
    Codeforces 749E Inversions After Shuffle 树状数组 + 数学期望
  • 原文地址:https://www.cnblogs.com/skylaugh/p/626719.html
Copyright © 2011-2022 走看看