我有一个在代码中构建的数据表,它可以动态地具有任何给定数量的列。我必须通过基于第一列添加一个新的 TableRow 来对 Gridview 中的行进行分组。这个要求意味着我不能使用 AutoGenerateColumns。我在 ItemTemplate 中创建了一个表,用于将行/单元格与 ItemDatabound 事件中的列绑定。这很好用,可以做我需要做的事情。我遇到的问题是我无法将标题绑定到列的名称。当我检查 RowType 是 ItemDatabound 上的标题时,我没有可用的 e.Row.DataItem 因为它从第一个数据行开始。结果,我无法检查要打印到该列标题单元格的 ColumnName 是什么。
这是我在 DataRow 上使用的代码(代码在 Delphi.net 中,但如果你也使用 c# 或 VB,你应该能够获得 gyst):
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;
希望有人可以对此有所了解。至少可以说,我有点坚持。
TIA劳埃德