이것을 구현하기 위하여 역시 Web.WbWeb 유니트를 약간 수정 하도록 합니다.
DataSetTableProducer1.tag 를 이용하여 tag 가 99 이면 Table 처리를 하고 아니면
LiveCiew 처리를 하면 되지 않나 생각합니다.
procedure TWebModule2.DataSetTableProducer1FormatCell 에서
if CellColumn = DataSetTableProducer1.tag then
CellData:= '<a href="#">'+CellData+'</a>';
으로 처리 하게끔하고
Web.DBWeb 에서
function TDataSetTableProducer.HtmlTable(DataSet: TDataSet; DataSetHandler: TDSTableProducer; MaxRows: Integer): string;
var
I, J: Integer;
DisplayText, RowHeaderStr: string;
Field: TField;
Column: THTMLTableColumn;
begin
if DataSet.State = dsBrowse then begin
J := 1;
while (MaxRows <> 0) and not DataSet.EOF do begin
// Result := Result + RowHeaderStr;
if SameText(Caption,'table') then begin
for I := 0 to DataSetHandler.Columns.Count - 1 do begin
Column := DataSetHandler.Columns[I];
Field := Column.Field;
if Field <> nil then
DisplayText := Field.DisplayText
else DisplayText := '';
with Column do
Result := Result + DataSetHandler.FormatCell(J, I, DisplayText, 'TD', BgColor, Align, VAlign, Custom);
end;
end else begin
if i < DataSetHandler.Columns.Count then I := Tag
else I:= 0;
Column := DataSetHandler.Columns[I];
Field := Column.Field;
if Field <> nil then
DisplayText := Field.DisplayText
else DisplayText := '';
with Column do
Result := Result + DataSetHandler.FormatCell(J, I, DisplayText, 'li', BgColor, Align, VAlign, Custom);
end;
Result := Result + EndRow + #13#10;
DataSet.Next;
Dec(MaxRows);
Inc(J);
end;
end;
J := 1;
while (MaxRows <> 0) and not DataSet.EOF do begin
// Result := Result + RowHeaderStr;
if SameText(Caption,'table') then begin
for I := 0 to DataSetHandler.Columns.Count - 1 do begin
Column := DataSetHandler.Columns[I];
Field := Column.Field;
if Field <> nil then
DisplayText := Field.DisplayText
else DisplayText := '';
with Column do
Result := Result + DataSetHandler.FormatCell(J, I, DisplayText, 'TD', BgColor, Align, VAlign, Custom);
end;
end else begin
if i < DataSetHandler.Columns.Count then I := Tag
else I:= 0;
Column := DataSetHandler.Columns[I];
Field := Column.Field;
if Field <> nil then
DisplayText := Field.DisplayText
else DisplayText := '';
with Column do
Result := Result + DataSetHandler.FormatCell(J, I, DisplayText, 'li', BgColor, Align, VAlign, Custom);
end;
Result := Result + EndRow + #13#10;
DataSet.Next;
Dec(MaxRows);
Inc(J);
end;
end;
당연히 헤더 부분도 수정 하여야 겠지요.
<div data-role="page">
<div data-role="header"><h1>Page Title</h1></div><!-- /header -->
<div data-role="content">
<ul data-role="listview" data-inset="true">
<div data-role="page">
<div data-role="header"><h1>Page Title</h1></div><!-- /header -->
<div data-role="content">
<ul data-role="listview" data-inset="true">
footer 부분도
</ul>
로 수정하여 주면 Caption 에다 Table/Ul 구분하여 넣어 주고 UL 이면 어떠한 컬럼으로 할것이지 지정하면 됩니다. 그렇지 않고 한 컬럼 만 있어도 되겠지요.
댓글 없음:
댓글 쓰기