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

  • 相关阅读:
    高级UIKit-04(NSUserDefaults、NSKeyedArchiver、对象归档方法)
    mac忘记登陆密码解决
    JAVA实现各种排序算法----更新中----
    MFC:DoModal 函数的用法
    Serialize序列化函数(MFC)
    Java语法学习5
    数据库VC++课程设计:动漫新番信息管理系统(MFC+数据库ODBC接口)+外加两个副作品
    为什么Java byte 类型的取值范围是-128~127
    Java语法学习4
    MySQL-5.7.17-winx64 Windows环境下的配置
  • 原文地址:https://www.cnblogs.com/skylaugh/p/626719.html
Copyright © 2011-2022 走看看