Программная привязка заголовка в Gridview - PullRequest
0 голосов
/ 18 ноября 2009

У меня есть встроенный код данных, который может динамически иметь любое количество столбцов. Я должен сгруппировать строки в 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

1 Ответ

1 голос
/ 18 ноября 2009

Вы можете сделать эту логику в событии OnDataBound. Вам нужно будет пройтись по всем строкам, и у вас будет доступ ко всем данным, которые вам нужны на данный момент.

...