DataGrid.CurrentPageIndex Propiedad

Definición

Obtiene o establece el índice de la página que se muestra actualmente.

public:
 property int CurrentPageIndex { int get(); void set(int value); };
[System.ComponentModel.Bindable(true)]
[System.ComponentModel.Browsable(false)]
public int CurrentPageIndex { get; set; }
[System.ComponentModel.Browsable(false)]
public int CurrentPageIndex { get; set; }
[<System.ComponentModel.Bindable(true)>]
[<System.ComponentModel.Browsable(false)>]
member this.CurrentPageIndex : int with get, set
[<System.ComponentModel.Browsable(false)>]
member this.CurrentPageIndex : int with get, set
Public Property CurrentPageIndex As Integer

Valor de propiedad

Índice de base cero de la página que se muestra actualmente.

Atributos

Excepciones

El índice de página especificado es un valor negativo.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la CurrentPageIndex propiedad para controlar mediante programación la página que se va a mostrar en el DataGrid control .

<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <script language="C#" runat="server">

      ICollection CreateDataSource() 
      {
         DataTable dt = new DataTable();
         DataRow dr;

         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
         dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
         dt.Columns.Add(new DataColumn("DateTimeValue", typeof(string)));
         dt.Columns.Add(new DataColumn("BoolValue", typeof(bool)));

         for (int i = 0; i < 200; i++) 
         {
            dr = dt.NewRow();

            dr[0] = i;
            dr[1] = "Item " + i.ToString();
            dr[2] = DateTime.Now.ToShortDateString();
            dr[3] = (i % 2 != 0) ? true : false;

            dt.Rows.Add(dr);
         }

         DataView dv = new DataView(dt);
         return dv;
      }

      void Page_Load(Object sender, EventArgs e) 
      {
         if (chk1.Checked)
            MyDataGrid.PagerStyle.Visible=true;
         else
            MyDataGrid.PagerStyle.Visible=false;    

         BindGrid();
      }

      void PagerButtonClick(Object sender, EventArgs e) 
      {
         // Used by external paging UI.
         String arg = ((LinkButton)sender).CommandArgument;

         switch(arg)
         {
            case ("next"):
               if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
                  MyDataGrid.CurrentPageIndex ++;
               break;
            case ("prev"):
               if (MyDataGrid.CurrentPageIndex > 0)
                  MyDataGrid.CurrentPageIndex --;
               break;
            case ("last"):
               MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
               break;
            default:

               // Page number.
               MyDataGrid.CurrentPageIndex = Convert.ToInt32(arg);
               break;
         }
         BindGrid();
      }

      void MyDataGrid_Page(Object sender, DataGridPageChangedEventArgs e) 
      {
         // Used by built-in pager.  CurrentPageIndex is already set.
         BindGrid();
      }

      void BindGrid() 
      {
         MyDataGrid.DataSource = CreateDataSource();
         MyDataGrid.DataBind();
         ShowStats();
      }

      void ShowStats() 
      {
         lblCurrentIndex.Text = "CurrentPageIndex is " + MyDataGrid.CurrentPageIndex;
         lblPageCount.Text = "PageCount is " + MyDataGrid.PageCount;
      }


   </script>

<head runat="server">
    <title>DataGrid Custom Paging Controls</title>
</head>
<body>

   <form id="form1" runat="server">

      <h3>DataGrid Custom Paging Controls</h3>

      <asp:DataGrid id="MyDataGrid"
           AllowPaging="True"
           PageSize="10"
           OnPageIndexChanged="MyDataGrid_Page"
           BorderColor="black"
           BorderWidth="1"
           GridLines="Both"
           CellPadding="3"
           CellSpacing="0"
           Font-Names="Verdana"
           Font-Size="8pt"
           runat="server">

          <PagerStyle Mode="NumericPages"
                      HorizontalAlign="Right">
          </PagerStyle>

          <HeaderStyle BackColor="#aaaadd">
          </HeaderStyle>

          <AlternatingItemStyle BackColor="#eeeeee">
          </AlternatingItemStyle>

      </asp:DataGrid>

      <br />

      <asp:LinkButton id="btnPrev"
           Text="Previous page"
           CommandArgument="prev"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"
           runat="server"/>

       

      <asp:LinkButton id="btnNext"
           Text="Next page"
           CommandArgument="next"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"
           runat="server"/>

       

      <asp:LinkButton id="btnPage8" runat="server"
           Text="Go to Page 8"
           CommandArgument="7"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"/>

       
 
      <asp:LinkButton id="btnFirst"
           Text="Go to the first page"
           CommandArgument="0"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"
           runat="server"/>

       

      <asp:LinkButton id="btnLast"
           Text="Go to the last page"
           CommandArgument="last"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"
           runat="server"/>

      <br />

      <asp:Checkbox id="chk1"
           Text="Show built-in pager"
           Font-Names="Verdana"
           Font-Size="8pt"
           AutoPostBack="true"
           runat="server"/>

      <br />

      <table style="background-color:#eeeeee; padding:6">
         <tr>
            <td style="display:inline">
               

                  <asp:Label id="lblCurrentIndex" 
                       runat="server" />
                  <br />

                  <asp:Label id="lblPageCount" 
                       runat="server" />
                  <br />

               
            </td>
         </tr>
      </table>
   </form>

</body>
</html>
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <script language="VB" runat="server">
    Function CreateDataSource() As ICollection
        Dim dt As New DataTable()
        Dim dr As DataRow
        
        dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
        dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
        dt.Columns.Add(New DataColumn("DateTimeValue", GetType(String)))
        dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))
        
        Dim i As Integer
        For i = 0 To 199
            dr = dt.NewRow()
            
            dr(0) = i
            dr(1) = "Item " + i.ToString()
            dr(2) = DateTime.Now.ToShortDateString()
            If i Mod 2 <> 0 Then
                dr(3) = True
            Else
                dr(3) = False
            End If
            
            dt.Rows.Add(dr)
        Next i
        
        Dim dv As New DataView(dt)
        Return dv
    End Function 'CreateDataSource


    Sub Page_Load(sender As Object, e As EventArgs)
        If chk1.Checked Then
            MyDataGrid.PagerStyle.Visible = True
        Else
            MyDataGrid.PagerStyle.Visible = False
        End If 
        BindGrid()
    End Sub 'Page_Load


    Sub PagerButtonClick(sender As Object, e As EventArgs)
        ' Used by external paging UI.
        Dim arg As String = CType(sender, LinkButton).CommandArgument
        
        Select Case arg
            Case "next"
                If MyDataGrid.CurrentPageIndex < MyDataGrid.PageCount - 1 Then
                    MyDataGrid.CurrentPageIndex += 1
                End If
            Case "prev"
                If MyDataGrid.CurrentPageIndex > 0 Then
                    MyDataGrid.CurrentPageIndex -= 1
                End If
            Case "last"
                MyDataGrid.CurrentPageIndex = MyDataGrid.PageCount - 1
            Case Else

                ' Page number.
                MyDataGrid.CurrentPageIndex = Convert.ToInt32(arg)
        End Select
        BindGrid()
    End Sub 'PagerButtonClick


    Sub MyDataGrid_Page(sender As Object, e As DataGridPageChangedEventArgs)
        ' Used by built-in pager.  CurrentPageIndex is already set.
        BindGrid()
    End Sub 'MyDataGrid_Page


    Sub BindGrid()
        MyDataGrid.DataSource = CreateDataSource()
        MyDataGrid.DataBind()
        ShowStats()
    End Sub 'BindGrid


    Sub ShowStats()
        lblCurrentIndex.Text = "CurrentPageIndex is " & MyDataGrid.CurrentPageIndex
        lblPageCount.Text = "PageCount is " & MyDataGrid.PageCount
    End Sub 'ShowStats

   </script>

<head runat="server">
    <title>DataGrid Custom Paging Controls</title>
</head>
<body>

   <form id="form1" runat="server">

      <h3>DataGrid Custom Paging Controls</h3>

      <asp:DataGrid id="MyDataGrid"
           AllowPaging="True"
           PageSize="10"
           OnPageIndexChanged="MyDataGrid_Page"
           BorderColor="black"
           BorderWidth="1"
           GridLines="Both"
           CellPadding="3"
           CellSpacing="0"
           Font-Names="Verdana"
           Font-Size="8pt"
           runat="server">

          <PagerStyle Mode="NumericPages"
                      HorizontalAlign="Right">
          </PagerStyle>

          <HeaderStyle BackColor="#aaaadd">
          </HeaderStyle>

          <AlternatingItemStyle BackColor="#eeeeee">
          </AlternatingItemStyle>

      </asp:DataGrid>

      <br />

      <asp:LinkButton id="btnPrev"
           Text="Previous page"
           CommandArgument="prev"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"
           runat="server"/>

       

      <asp:LinkButton id="btnNext"
           Text="Next page"
           CommandArgument="next"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"
           runat="server"/>

       

      <asp:LinkButton id="btnPage8" runat="server"
           Text="Go to Page 8"
           CommandArgument="7"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"/>

       
 
      <asp:LinkButton id="btnFirst"
           Text="Go to the first page"
           CommandArgument="0"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"
           runat="server"/>

       

      <asp:LinkButton id="btnLast"
           Text="Go to the last page"
           CommandArgument="last"
           ForeColor="navy"
           Font-Names="Verdana"
           Font-Size="8pt"
           OnClick="PagerButtonClick"
           runat="server"/>

      <br />

      <asp:Checkbox id="chk1"
           Text="Show built-in pager"
           Font-Names="Verdana"
           Font-Size="8pt"
           AutoPostBack="true"
           runat="server"/>

      <br />

      <table style="background-color:#eeeeee; padding:6">
         <tr>
            <td style="display:inline">
               

                  <asp:Label id="lblCurrentIndex" 
                       runat="server" />
                  <br />

                  <asp:Label id="lblPageCount" 
                       runat="server" />
                  <br />

               
            </td>
         </tr>
      </table>
   </form>

</body>
</html>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    private ICollection CreateDataSource()
    {
        // Create sample data for the DataGrid control.
        DataTable dt = new DataTable();
        DataRow dr;

        // Define the columns of the table.
        dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
        dt.Columns.Add(new DataColumn("StringValue", typeof(String)));
        dt.Columns.Add(new DataColumn("CurrencyValue", typeof(Double)));

        // Populate the table with sample values.
        for (int i = 0; i <= 100; i++) 
        {
            dr = dt.NewRow();
            dr[0] = i;
            dr[1] = "Item " + i.ToString();
            dr[2] = 1.23 * (i + 1);

            dt.Rows.Add(dr);
        }
        DataView dv = new DataView(dt);
        return dv;
    }

    private void Page_Load(Object sender, EventArgs e)
    { 
        // Load sample data only once, when the page is first loaded.
        if (!IsPostBack)
        { 
            ItemsGrid.DataSource = CreateDataSource();
            ItemsGrid.DataBind();
        }
    }

    private void Check_Change(Object sender, EventArgs e)
    {
        // Allow or prevent paging depending 
        // on the user's selection.
        ItemsGrid.AllowPaging = AllowPagingCheckBox.Checked;

        // Rebind the data to refresh the DataGrid control. 
        ItemsGrid.DataSource = CreateDataSource();
        ItemsGrid.DataBind();
    }

    private void Grid_Change(Object sender, DataGridPageChangedEventArgs e) 
    {
        // For the DataGrid control to navigate to the correct page when
        // paging is allowed, the CurrentPageIndex property must be updated
        // programmatically. This process is usually accomplished in the
        // event-handling method for the PageIndexChanged event.

        // Set CurrentPageIndex to the page the user clicked.
        ItemsGrid.CurrentPageIndex = e.NewPageIndex;

        // Rebind the data to refresh the DataGrid control. 
        ItemsGrid.DataSource = CreateDataSource();
        ItemsGrid.DataBind();
    }
</script>
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>DataGrid AllowPaging Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
 
    <h3>DataGrid AllowPaging Example</h3>

    <p>Select whether to allow paging in the DataGrid control.<br />
       <asp:CheckBox id="AllowPagingCheckBox"
            Text="Allow paging"
            AutoPostBack="True"
            Checked="True"
            OnCheckedChanged="Check_Change"
            runat="server" />
    </p>
    <hr />
    <asp:Label runat="server" 
        AssociatedControlID="ItemsGrid" 
        Font-Bold="true">Product List</asp:Label>
    <asp:DataGrid id="ItemsGrid" runat="server"
        BorderColor="Gray"
        BorderWidth="1"
        CellPadding="3"
        AutoGenerateColumns="False"
        UseAccessibleHeader="true"
        PageSize="10"
        AllowPaging="True"
        OnPageIndexChanged="Grid_Change">

        <HeaderStyle BackColor="LightBlue" />
        <Columns>
            <asp:BoundColumn DataField="IntegerValue" 
                 SortExpression="IntegerValue"
                 ItemStyle-HorizontalAlign="center"
                 HeaderText="Item" />

            <asp:BoundColumn DataField="StringValue" 
                HeaderText="Description" 
                ItemStyle-HorizontalAlign="left"
                SortExpression="StringValue" />

            <asp:BoundColumn DataField="CurrencyValue" 
                 HeaderText="Price"
                 SortExpression="CurrencyValue"
                 DataFormatString="{0:c}" />

        </Columns>
        <ItemStyle HorizontalAlign="Right" />
    </asp:DataGrid>

    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Function CreateDataSource() As ICollection
        ' Create sample data for the DataGrid control.
        Dim dt As DataTable = New DataTable()
        Dim dr As DataRow
 
        ' Define the columns of the table.
        dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
        dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
        dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
 
        ' Populate the table with sample values.
        Dim i As Integer
        For i = 0 To 100
            dr = dt.NewRow()
            dr(0) = i
            dr(1) = "Item " & i.ToString()
            dr(2) = 1.23 * (i + 1)
            dt.Rows.Add(dr)
        Next i
 
        Dim dv As DataView = New DataView(dt)
        Return dv
    End Function
 
    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        ' Load sample data only once, when the page is first loaded.
        If Not IsPostBack Then
            ItemsGrid.DataSource = CreateDataSource()
            ItemsGrid.DataBind()
        End If
    End Sub

    Sub Check_Change(ByVal sender As Object, ByVal e As EventArgs)
        ' Allow or prevent paging depending on the user's selection.
        ItemsGrid.AllowPaging = AllowPagingCheckBox.Checked()

        ' Rebind the data to refresh the DataGrid control. 
        ItemsGrid.DataSource = CreateDataSource()
        ItemsGrid.DataBind()
    End Sub

    Sub Grid_Change(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
        ' For the DataGrid control to navigate to the correct page when
        ' paging is allowed, the CurrentPageIndex property must be updated
        ' programmatically. This process is usually accomplished in the
        ' event-handling method for the PageIndexChanged event.

        ' Set CurrentPageIndex to the page the user clicked.
        ItemsGrid.CurrentPageIndex = e.NewPageIndex

        ' Rebind the data to refresh the DataGrid control. 
        ItemsGrid.DataSource = CreateDataSource()
        ItemsGrid.DataBind()
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head2" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <h3>DataGrid AllowPaging Example</h3>

    <p>Select whether to allow paging in the DataGrid control.<br />
       <asp:CheckBox id="AllowPagingCheckBox"
            Text="Allow paging"
            AutoPostBack="True"
            Checked="True"
            OnCheckedChanged="Check_Change"
            runat="server" />
    </p>
    <hr />
    <asp:Label ID="Label1" runat="server" 
        AssociatedControlID="ItemsGrid" 
        Font-Bold="true">Product List</asp:Label>
    <asp:DataGrid id="ItemsGrid" runat="server"
        BorderColor="Gray"
        BorderWidth="1"
        CellPadding="3"
        UseAccessibleHeader="true"
        AutoGenerateColumns="False"
        PageSize="10"
        AllowPaging="True"
        OnPageIndexChanged="Grid_Change">

        <HeaderStyle BackColor="LightBlue" />
        <Columns>
            <asp:BoundColumn DataField="IntegerValue" 
                 SortExpression="IntegerValue"
                 ItemStyle-HorizontalAlign="center"
                 HeaderText="Item" />

            <asp:BoundColumn DataField="StringValue" 
                HeaderText="Description" 
                ItemStyle-HorizontalAlign="left"
                SortExpression="StringValue" />

            <asp:BoundColumn DataField="CurrencyValue" 
                 HeaderText="Price"
                 SortExpression="CurrencyValue"
                 DataFormatString="{0:c}" />

        </Columns>
        <ItemStyle HorizontalAlign="Right" />
    </asp:DataGrid>

    </div>
    </form>
</body>
</html>

Comentarios

Utilice esta propiedad para determinar la página que se muestra actualmente en el DataGrid control al habilitar la paginación. Esta propiedad también se usa para controlar mediante programación qué página se muestra.

También puede ocultar los controles de paginación integrados y crear controles personalizados. Para mostrar una página específica, establezca esta propiedad en el índice de página que desea mostrar y, a continuación, vuelva a enlazar los datos al DataGrid control.

Se aplica a

Consulte también