Je dispose d'un datableau construit en code pouvant contenir dynamiquement un nombre donné de colonnes. Je dois regrouper les lignes dans Gridview en ajoutant un nouveau TableRow basé sur la première colonne. Cette exigence signifie que je ne peux pas utiliser les AutoGenerateColumns. J'ai créé une table dans un ItemTemplate que j'utilise pour lier les lignes/cellules aux colonnes de l'événement ItemDatabound. Cela fonctionne bien et fait ce que je dois faire. Le problème que j'ai est que je ne peux pas lier mon en-tête au nom des colonnes. Lorsque je vérifie que RowType est un en-tête sur ItemDatabound, je n'ai pas d'e.Row.DataItem disponible car cela commence sur la première ligne de données. Par conséquent, je ne peux pas vérifier quel est le nom de colonne avec lequel je veux imprimer dans la cellule d'en-tête de cette colonne.Liaison par programme d'un en-tête dans un Gridview
Voici le code que je utilise sur le DataRow (code est en Delphi.net mais vous devriez être en mesure d'obtenir le gyst si vous utilisez C# ou VB trop):
if (e.Row.RowType = DataControlRowType.DataRow) then begin
if panlViewAllResults.Visible then begin
for i := 0 to lDataRow.DataView.Table.Columns.Count - 1 do begin
if Assigned(lDataRow.Item[i]) then begin
lCell := TableCell.Create;
lCell.Text := lDataRow.Item[i].ToString;
lRow1.Controls.Add(lCell);
end;
end;
lTable.Controls.Add(lRow1);
end;
end;
Je pensais que je pourrait faire quelque chose comme ça pour l'en-tête. Mais apparantly pas:
if (e.Row.RowType = DataControlRowType.Header) then begin
for i := 0 to lDataRow.DataView.Table.Columns.Count - 1 do begin
if Assigned(lDataRow.Item[i]) then begin
lCell := TableCell.Create;
lCell.Text := lDataRow.DataView.Table.Columns[i].ColumnName;
end;
end;
end;
quelqu'un Espérant peut jeter un peu de lumière à ce sujet. Je suis un peu coincé pour dire le moins.
TIA Lloyd