如何在分页的GridView中分配正确的序列号?

问题描述 投票:1回答:6

如果我编写下面的代码,则Gridview将显示内容,但是序列号(S.N.)在第二页中再次从1开始。

通过自定义组件(.DLL)调用数据。

如何解决?

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
  GridView1.PageIndex = e.NewPageIndex;
  DataTable dt = new DataTable();
  MMSLAYER.BLL.ReportBLL rb = new ReportBLL();
  dt = rb.atmservicing(Convert.ToInt32(ddlServiceBy.SelectedValue), 
  Convert.ToDateTime(txtDateFrom.Text), Convert.ToDateTime(txtDateTo.Text));
  GridView1.DataSource = dt;
  GridView1.DataBind();
  GridView1.Visible = true;
  ViewState["dtList"] = dt;
}
c# asp.net gridview
6个回答
2
投票

在我看来,您似乎正在借助以下代码进行打印(S.N):

 e.Row.RowIndex

代替此,请尝试以下代码行:

e.Row.DataItemIndex

当然,这应该在您的gridview行数据绑定事件中。


0
投票

在“源”视图中,将元素的AllowPaging属性设置为true,如以下示例所示:

 <asp:GridView Runat="server" ID="GridView1" AllowPaging="true" />

您可以设置页面大小以指定一次显示多少行。此外,您可以设置用于创建导航按钮的链接的样式。您可以选择以下类型:

Next and previous buttons. The button captions can be any text you want.

Page numbers, which allow users to jump to a specific page. You can specify how many numbers are displayed; if there are more pages, an ellipsis (...) is displayed next to the numbers.

更改每页显示的行数

Select the GridView control, and in the Properties window, set PageSize to the number of rows you want to display per page.

使用下一个和上一个按钮指定默认分页

Set the GridView control to allow paging.

In the Properties window, expand the PagerSettings node.

Set Mode to NextPrevious.

0
投票

在GridView声明中添加OnRowDataBound =“ GridView1_RowDataBound”:

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" ....>

在GridView中添加TemplateField:

<asp:TemplateField HeaderText="Serial number">
    <ItemTemplate>
        <asp:Label ID="lblSerial" runat="server"></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

将其添加到.cs文件中

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Label lblSerial = (Label)e.Row.FindControl("lblSerial");
            lblSerial.Text = ((GridView1.PageIndex * GridView1.PageSize) + e.Row.RowIndex + 1).ToString();
        }
    }

0
投票

尝试使用模板字段进行后续操作:

    <asp:TemplateField>
        <ItemTemplate>
             <%#Container.DataItemIndex+1 %>
        </ItemTemplate>
    </asp:TemplateField>

0
投票

在我看来,您似乎正在借助以下代码进行打印(S.N):

'runat =“ server” />-%>

代替此,请尝试以下代码行:

'runat =“ server” />-%>

0
投票

在我看来,您似乎正在借助以下代码进行打印(S.N):

<asp:Label ID="lblslno" Text='<%# Container.DisplayIndex + 1 %>' runat="server"/>

代替此,请尝试以下代码行:

<asp:Label ID="lblslno" Text='<%# Container.DataItemIndex + 1 %>‘ runat="server"/>

注意使用DataItemIndex而不是DisplayIndex

© www.soinside.com 2019 - 2024. All rights reserved.