Si le DataGrid utilise la pagination, la dernière page peut ne pas être « pleine page », il peut donc y avoir des problèmes avec la mise en page du DataGrid. Les lignes restantes seront trop larges et l'ensemble du DataGrid deviendra laid.
Des solutions peuvent probablement être envisagées à trois endroits :
1. Remplissez les nouvelles lignes de données dans la DataSource.
2. Remplissez la nouvelle ligne de contrôle vide dans le DataGrid.
3. Utilisez javascript pour remplir la nouvelle ligne de contrôle HTML dans la page Web.
J'ai utilisé la deuxième méthode. Dans la méthode de réponse de l'événement de pré-rendu de la grille de données, remplissez la ligne vide au-dessus de la ligne de pied de page. Le code est le suivant :
protected virtual void SpiderSurfGrid_PreRender (object sender, System.EventArgs e)
{
DataGridItem dgi ;
Cellule de table System.Web.UI.WebControls.TableCell ;
Ligne de table System.Web.UI.WebControls.TableRow ;
Grille DataGrid = (expéditeur en tant que DataGrid) ;
if(grid.Controls.Count == 0) return;
Table System.Web.UI.WebControls.Table = (grid.Controls[0] comme System.Web.UI.WebControls.Table) ;
tablerow = (System.Web.UI.WebControls.TableRow)(table.Controls[1]);
for(int j=this.PageSize+4-table.Controls.Count;j>0;j--)
{
dgi = new DataGridItem(0,0,ListItemType.Item);
pour(int i=0;i<tablerow.Controls.Count;i++)
{
tablecell = new System.Web.UI.WebControls.TableCell();
dgi.Cells.Add(tablecell);
}
table.Controls.AddAt(table.Controls.Count-2,dgi);
}
}
Explication : Ce qui est considéré ici est une grille de données liée avec des lignes d'en-tête/pied de page/pager et un pager en dessous.
Ce qui est étrange, c'est que je ne peux pas ajouter cssstyle à une ligne ici. Une fois que j'aurai dgi.cssstyle="dumpTableRowClass"; ces lignes nouvellement ajoutées s'effondreront. Si vous réussissez, donnez-moi quelques conseils.
Original par athossmth, veuillez l'indiquer lors de la réimpression.