任意の数の列を動的に持つことができるコードに組み込まれているデータテーブルがあります。最初の列に基づいて新しい TableRow を追加して、Gridview 内の行をグループ化する必要があります。この要件は、AutoGenerateColumns を使用できないことを意味します。ItemDatabound イベントの列に対して行/セルをバインドするために使用している ItemTemplate 内にテーブルを作成しました。これはうまく機能し、私がする必要があることを行います。私が抱えている問題は、ヘッダーを列の名前にバインドできないことです。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;
誰かがこれに光を当てることができることを願っています。控えめに言っても、私は少し立ち往生しています。
ティアロイド