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

  • 相关阅读:
    面经中高频知识点归纳(四)
    ssh整合思想初步 struts2与Spring的整合 struts2-spring-plugin-2.3.4.1.jar下载地址 自动加载Spring中的XML配置文件 Struts2下载地址
    ssh整合思想初步 structs2 Spring Hibernate三大框架各自要点
    Spring中使用事务搭建转账环境方法二 相对简便的注解方法 ——配置文件注入对象属性需要setter方法 注解方法,不需要生成setter方法
    Spring中使用事务搭建转账环境 转账操作,
    Spring中c3p0连接池的配置 及JdbcTemplate的使用 通过XML配置文件注入各种需要对象的操作 来完成数据库添加Add()方法
    Spring XML配置文件无法自动提示 eclipse中XML配置文件open with打开方式选择 XML Editor:注意它的编辑方式也是有两种的design和source
    Spring中c3p0连接池 jar包下载 c3p0-0.9.2.1 jar包和mchange-commons-java-0.2.3.4 jar 包
    在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
    java在线聊天项目1.3版设计好友列表框功能补充,因只要用户登录就发送一串新列表,导致不同客户端好友列表不同问题
  • 原文地址:https://www.cnblogs.com/skylaugh/p/626719.html
Copyright © 2011-2022 走看看