0

我有一个在代码中构建的数据表,它可以动态地具有任何给定数量的列。我必须通过基于第一列添加一个新的 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劳埃德

4

1 回答 1

1

您可以在事件 OnDataBound 中执行此逻辑。您需要遍历所有行,此时您将可以访问所需的所有数据。

于 2009-11-18T02:02:36.127 回答