1

如果我编写以下代码,gridview 会显示内容,但序列号 (SN) 在第二页中再次从 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;
}
4

6 回答 6

2

在我看来,好像您正在借助以下代码打印(SN):

 e.Row.RowIndex

取而代之的是,尝试以下代码行:

e.Row.DataItemIndex

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

于 2013-10-25T05:09:08.653 回答
0

在 Source 视图中,将元素的 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.

使用 Next 和 Previous 按钮指定默认分页

Set the GridView control to allow paging.

In the Properties window, expand the PagerSettings node.

Set Mode to NextPrevious.
于 2013-10-25T05:14:24.953 回答
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();
        }
    }
于 2013-10-26T12:15:29.477 回答
0

使用模板字段尝试以下操作:

    <asp:TemplateField>
        <ItemTemplate>
             <%#Container.DataItemIndex+1 %>
        </ItemTemplate>
    </asp:TemplateField>
于 2019-02-04T13:02:03.963 回答
0

在我看来,好像您正在借助以下代码打印(SN):

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

取而代之的是,尝试以下代码行:

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

注意使用DataItemIndex代替DisplayIndex

于 2020-03-19T06:55:27.737 回答
0

在我看来,好像您正在借助以下代码打印(SN):

' runat="server"/>--%>

取而代之的是,尝试以下代码行:

' runat="server"/>--%>
于 2020-03-19T07:03:23.110 回答