Je voudrais insérer par programme des lignes supplémentaires dans un DataGrid (pour agir comme des sous-titres). J'ai suivi un certain nombre d'articles en ligne (à savoir l'option 3 de http://aspalliance.com/723) mais ils se traduisent tous par l'affichage correct de la ligne, mais sans contenu.Comment puis-je insérer par programme une ligne supplémentaire dans un DataGrid ASP.NET?
Voici la partie importante du code J'utilise:
private void MyDataGrid_ItemCreated(object sender, DataGridItemEventArgs e)
{
// This method will create a subheading row if needed
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
// TableCell
TableCell tc = new TableCell();
tc.Controls.Add(new LiteralControl("foo"));
tc.ColumnSpan = e.Item.Cells.Count;
// DataGridItem
DataGridItem di = new DataGridItem(e.Item.ItemIndex + 1, 0, ListItemType.Item);
di.Height = new Unit(100, UnitType.Pixel);
di.CssClass = "testClass";
di.Controls.Add(tc);
// DataGrid Table
DataGrid dg = (DataGrid)sender;
Table childTable = (Table)dg.Controls[0];
childTable.Rows.Add(di);
}
}
Il en résulte le balisage suivant généré au bon endroit, mais sans LiteralControl (« foo »)
<tr class="testClass" style="height:100px;">
</tr>
Je voudrais utiliser cette approche plutôt que de manipuler la source de données elle-même. Qu'est-ce qui pourrait mal tourner?
Je viens d'essayer un exemple isolé en utilisant le code que vous avez posté et cela fonctionne très bien. Cela doit être quelque chose à voir avec la config de votre DataGrid ou quelque chose d'ailleurs dans votre code. –
Vous avez raison, merci – tjrobinson
J'ai donné votre réponse à +1 mais j'allais marquer ma propre réponse comme réponse choisie une fois que les 48 heures se sont écoulées - pour ne pas être égoïste, mais parce qu'elle donne un peu plus de détails sur le cause du problème. – tjrobinson