zoukankan      html  css  js  c++  java
  • GridView,Repeater增加自动序号列

    有三种实现的方式,

    第一种方式,直接在Aspx页面GridView模板列中.这种的缺点是到第二页分页时又重新开始了.

    <Columns>         

    <asp:TemplateField HeaderText="序号" InsertVisible="False">
                  <ItemStyle HorizontalAlign="Center" />
                  <HeaderStyle HorizontalAlign="Center" Width="5%" />
                 <ItemTemplate>
                  <%#Container.DataItemIndex+1%>
                </ItemTemplate>
    </asp:TemplateField>

    </Columns>


    第二种方式分页时进行了计算,这样会累计向下加.

                <asp:TemplateField HeaderText="序号" InsertVisible="False">
                  <ItemStyle HorizontalAlign="Center" />
                  <HeaderStyle HorizontalAlign="Center" Width="5%" />
                 <ItemTemplate>
                     <asp:Label ID="Label2" runat="server" Text='<%# this.MyListGridView.PageIndex * this.MyListGridView.PageSize + this.MyListGridView.Rows.Count + 1%>'/>
                </ItemTemplate>
                </asp:TemplateField>


    第三种方式
    还有一种方式放在cs代码中,和第二种相似.

        <asp:BoundField HeaderText="序号" >
                  <ItemStyle HorizontalAlign="Center" />
                  <HeaderStyle HorizontalAlign="Center" Width="5%" />
              </asp:BoundField>


            protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowIndex != -1)
                {
                    int indexID = this.myGridView.PageIndex * this.myGridView.PageSize + e.Row.RowIndex + 1;
                     e.Row.Cells[0].Text = indexID.ToString();
                 }
             }

    第四种方法

      双击GridView的OnRowDataBound事件;
    在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示:
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //如果是绑定数据行 //清清月儿http://blog.csdn.net/21aspnet 
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ////鼠标经过时,行背景色变
                //e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
                ////鼠标移出时,行背景色变
                //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");

                ////当有编辑列时,避免出错,要加的RowState判断
                //if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
                //{
                //    ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:"" + e.Row.Cells[1].Text + ""吗?')");
                //}

            }
            if (e.Row.RowIndex != -1)
            {
                int id = e.Row.RowIndex + 1;
                e.Row.Cells[0].Text = id.ToString();
            }

        }

    注意这时最好把前台的第一列的表头该为“编号”,因为以前的第一列被“吃掉”了。
    <asp:GridView ID="GridView1" runat="server" CellPadding="3" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
                            OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" Font-Size="12px" OnRowDataBound="GridView1_RowDataBound">
                            <FooterStyle BackColor="White" ForeColor="#000066" />
                            <Columns>
                                <asp:BoundField DataField="身份证号码" HeaderText="编号" ReadOnly="True" />
                                <asp:BoundField DataField="姓名" HeaderText="用户姓名" />
                                <asp:BoundField DataField="员工性别" HeaderText="性别" />
                                <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" />
                                <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
                                <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
                                <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
                            </Columns>
                            <RowStyle ForeColor="#000066" />
                            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
                            <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                        </asp:GridView>

    这里基本上介绍的已经够用了,详细试试;

    Repeater自身就带有这个获取当前行号的属性,而无需程序员绑定这个行号,Container.ItemIndex 就可以获取了,见下示例:

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            行号:<%#Container.ItemIndex %>
        </ItemTemplate>
    </asp:Repeater>

    如果上面的示例中,Repeater已经绑定了数据,并且数据的至少为一笔记录,那么行号就会显示出来,行号从零开始,如果想改为从1开始,那么可以将以上的代码改为Container.ItemIndex + 1,见如下示例:

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            行号:<%#Container.ItemIndex + 1 %>
        </ItemTemplate>
    </asp:Repeater>

    就可以了。

    <asp:Repeater ID="Repeater1" runat="server">
       
    <ItemTemplate>
           
    <%# Container.ItemIndex + 1%>
           
    <%# (Container as RepeaterItem).ItemIndex + 1%>
       
    </ItemTemplate>
    </asp:Repeater>

    赠送一个小技巧:

    Repeater数据为空时提示暂无数据

    <FooterTemplate>  
           
    <asp:Label ID="lblEmpty" Text="暂无数据" runat="server"  Visible='<%#bool.Parse((Repeater1.Items.Count==0).ToString())%>'></asp:Label> 
                    
      </FooterTemplate>

    风雪七月花溅墨
  • 相关阅读:
    思念
    Matlab与C++混合编程,添加OpenCV库
    重新启用此博客
    将博客搬至CSDN
    unity探索者之ILRuntime代码热更新
    unity探索者之UGUI圆形图片组件
    unity探索者之UGUI图片描边
    unity探索者之iOS微信登录、分享
    unity探索者之复制内容到剪贴板
    unity探索者之获取设备当前电量
  • 原文地址:https://www.cnblogs.com/bobo41/p/3392371.html
Copyright © 2011-2022 走看看