У меня есть встроенный код данных, который может динамически иметь любое количество столбцов. Я должен сгруппировать строки в Gridview, добавив новый TableRow на основе первого столбца. Это требование означает, что я не могу использовать AutoGenerateColumns. Я создал таблицу в ItemTemplate, которую я использую, чтобы связать строки / ячейки со столбцами в событии ItemDatabound. Это прекрасно работает и делает то, что мне нужно сделать. Проблема в том, что я не могу привязать свой заголовок к имени столбца. Когда я проверяю, что RowType является заголовком на ItemDatabound, у меня нет доступного e.Row.DataItem, потому что он начинается с 1-й строки данных. В результате я не могу проверить, что такое ColumnName, с которым я хочу печатать в ячейку заголовка этого столбца.
Вот код, который я использую в DataRow (код находится на Delphi.net, но вы должны быть в состоянии получить гист, если вы также используете c # или VB):
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;
Я думал, что смогу сделать что-то подобное для заголовка. Но, очевидно, нет:
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;
Надеясь, что кто-то может пролить свет на это. Я немного застрял, если не сказать больше.
ТИА
Lloyd