2009-04-06 9 views
0

J'utilise Infragistics UltraWebGrid dans mon application lorsque j'utilise la pagination personnalisée Je ne suis pas en mesure de récupérer le nombre spécifié d'enregistrements par pageInfragistics UltraWebGrid pagination personnalisée

Le code que je l'ai écrit est string [] cusLabel;

dans la grille initialiser

grid.DisplayLayout.Pager.AllowCustomPaging = true; 
grid.DisplayLayout.Pager.AllowPaging = true;   
grid.DisplayLayout.Pager.StyleMode = PagerStyleMode.CustomLabels; 
grdSysManager.DisplayLayout.Pager.PageSize = 3; 
getCustomLabel(); 
grdSysManager.DisplayLayout.Pager.CustomLabels = cusLabel; 


private void getCustomLabel() 
{ 
    DataTable dt = (DataTable)grdSysManager.DataSource; 
    DataSet ds = new DataSet(); 
    ds = dt.DataSet; 
    //ds = (DataSet)grdSysManager.DataSource; 
    int NoOfRows = ds.Tables[0].Rows.Count; 
    int PageSize = grdSysManager.DisplayLayout.Pager.PageSize; 
    if (NoOfRows % PageSize == 0) 
    { 
     totalNoOfPagings = NoOfRows/PageSize; 
    } 
    else 
    { 
     totalNoOfPagings = (NoOfRows/PageSize) + 1; 
    } 

    cusLabel = new string[totalNoOfPagings + 2]; 

    cusLabel[0] = "First"; 

    for (int i = 1; i <= totalNoOfPagings; i++) 
    { 
     cusLabel[i] = i.ToString(); 
    } 


    cusLabel[totalNoOfPagings + 1] = "Last"; 
} 

Au-dessus est le code que j'écrit, mais il affiche tous les enregistrements de la table au lieu de 3 enregistrements par page. Est-ce que je manque quelque chose?

Merci

Répondre

0

Je crois que PageSize est le nombre d'étiquettes personnalisées, lorsque vous utilisez la pagination personnalisée. Pour donner à la grille seulement trois lignes par page, vous devez lui donner seulement trois lignes dans l'événement DataBinding de la grille.

La pagination personnalisée avec cette grille ne se limite pas à l'aspect personnalisé du pager: il s'agit de prendre vous-même en charge la majeure partie du processus de pagination. La grille affichera vos étiquettes personnalisées, et tout les fera en hyperliens sauf pour celui indiqué comme la page en cours. Lorsque vous cliquez sur l'un des liens, le PageIndexChanged sera déclenché et il vous indiquera l'index du lien sur lequel vous avez cliqué. Ce que vous faites avec cet indice dépend de vous.

1
<table cellspacing='0' cellpadding='0' width='100%'> 
    <tr> 
     <td width='12%' align='left'> 
      [currentpageindex]/[pagecount] 
     </td> 
     <td width='76%'> 
      <b>[page:1:First]&nbsp;[prev]</b> 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      [default] 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <b>[next]&nbsp;[page:[pagecount]:Last]</b> 
     </td> 

     <td width='12%' align='right' title='Enter page number and press Enter'> 
      Go to: 
      <input id='xtxtGotoPage' size='5' 
      style='font-family:verdana;font-size:8pt;padding:0 0 0 0' 
      type='text' onKeyPress='return gotoPage()' autocomplete='off' /> 
     </td> 
    </tr> 
</table> 

Ce motif peut être affecté dans le concepteur de grille, directement dans le balisage de la grille ou même à l'exécution à la propriété Pager.Pattern. La seule chose qui reste est d'implémenter la fonction JavaScript (balisage, ligne 17) qui irait au numéro de page que l'utilisateur entre. Et le voici:

function gotoPage() { 

    if (event.keyCode == 13) { 

     var otxtGotoPage = event.srcElement; 
     var iPageNo = otxtGotoPage.value 

     if (!isNaN(iPageNo)) { 

      var oGrid = igtbl_getGridById('xuwgMyGrid'); 

      if (iPageNo < 1 || iPageNo > oGrid.PageCount) { 
       alert('Please enter page number between 1 and ' + 
         oGrid.PageCount) 
      } else { 
       oGrid.goToPage(iPageNo) 
      }  

     } else { 

      alert('Please enter correct numeric page number'); 

     } 

     otxtGotoPage.focus(); 
     otxtGotoPage.value = ''; 
     return false; 
    } 
} 
Questions connexes