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(); // 数据绑定
             }

  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/skylaugh/p/626719.html
Copyright © 2011-2022 走看看