2

foreachコレクションから新しいオブジェクト呼び出し Time を作成するループがありますTimeEntriesCollection。ループの後、オブジェクトはArrayList呼び出された に追加されentryListます。

これArrayListはメソッドを介して に渡されDataGrid、結果が表示されます。結果は、ユーザーごとに個別のテーブルを示します。つまり、ヘッダーも個別に表示されます。ヘッダーを繰り返さずにすべてのオブジェクトを 1 つのテーブルに表示するにはどうすればよいですか?

以下に、aspx ページのコードを示します。

<asp:DataList ID="UserDetails" runat="server" Width="100%" OnSelectedIndexChanged="UserDetails_SelectedIndexChanged">
 <ItemTemplate>
  <asp:DataGrid ID="TimeEntryGrid" DataSource='<%# ListTimeEntry(TTSecurity.GetUserID(), _userIDs, _startDate, _endDate) %>'runat="server" BorderStyle="None" Width="100%" CellPadding="4" AutoGenerateColumns="False"Font-Name="Verdana" AllowSorting="True" BorderColor="White" OnSortCommand="TimeEntryGrid_Sort">
   <HeaderStyle Font-Bold="True" CssClass="report-header"></HeaderStyle>
   <ItemStyle CssClass="report-text" />
   <Columns>
    <asp:BoundColumn DataField="UserName" HeaderText="Resource" SortExpression="UserName"ItemStyle-Wrap="false" />
    <asp:BoundColumn DataField="EntryDate" HeaderText="Date" SortExpression="EntryDate"DataFormatString="{0:yyyy-MM-dd}" ItemStyle-Wrap="false" />
    <asp:BoundColumn DataField="ProjectName" HeaderText="Project" SortExpression="ProjectName"ItemStyle-Wrap="false" />
    <asp:BoundColumn DataField="CategoryShortName" HeaderText="Category" SortExpression="CategoryName"ItemStyle-Wrap="false" />
    <asp:BoundColumn DataField="CompanyName" HeaderText="Company" SortExpression="CompanyName"ItemStyle-Wrap="false" />
    <asp:BoundColumn DataField="Duration" HeaderText="Hrs" SortExpression="Duration"DataFormatString="{0:n1}" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" />
    <asp:BoundColumn DataField="Cost" HeaderText="Charges($)" SortExpression="Cost" DataFormatString="{0:n2}"ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" />
    <asp:BoundColumn DataField="Description" HeaderText="Description" SortExpression="Description" />
   </Columns>
  </asp:DataGrid>
 </ItemTemplate>
</asp:DataList>

編集:

ののDataList2 番目のパラメータを取得するために使用されます。元のパラメーターはで、1 人のユーザーのみを取得することを意味すると考えたので、それを(ストアド プロシージャで処理されるコンマ付きの整数の文字列) に置き換えました。しかし、タグを削除して 2 番目のパラメーターを に置き換えると、何も表示されません。タグがまだそこにあるので、得られた出力は、最初に述べたものです。DataSourceDataGrid(int)DataBinder.Eval(Container.DataItem, "UserID")_userIDsDataList_userIDsDataList

4

1 に答える 1

1

1 つのテーブルを生成する単一のリピーターの後にあるネストされたリピーターを作成したと思います。次の設定を検討してください。

ASPX:
読みやすくするために一部の属性を削除しました

<asp:DataGrid ID="TimeEntryGrid" runat="server">
 <Columns>
  <asp:BoundColumn DataField="UserName" HeaderText="Resource" SortExpression="UserName"ItemStyle-Wrap="false" />
  <asp:BoundColumn DataField="EntryDate" HeaderText="Date" SortExpression="EntryDate"DataFormatString="{0:yyyy-MM-dd}" ItemStyle-Wrap="false" />
  <asp:BoundColumn DataField="ProjectName" HeaderText="Project" SortExpression="ProjectName"ItemStyle-Wrap="false" />
  <asp:BoundColumn DataField="CategoryShortName" HeaderText="Category" SortExpression="CategoryName"ItemStyle-Wrap="false" />
  <asp:BoundColumn DataField="CompanyName" HeaderText="Company" SortExpression="CompanyName"ItemStyle-Wrap="false" />
  <asp:BoundColumn DataField="Duration" HeaderText="Hrs" SortExpression="Duration"DataFormatString="{0:n1}" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" />
  <asp:BoundColumn DataField="Cost" HeaderText="Charges($)" SortExpression="Cost" DataFormatString="{0:n2}"ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" />
  <asp:BoundColumn DataField="Description" HeaderText="Description" SortExpression="Description" />
 </Columns>
</asp:DataGrid>

CS (コードビハインド):

ArrayList entryList = new ArrayList();
/* assign values to entryList here */

TimeEntryGrid.DataSource = entryList;
于 2013-06-04T07:54:36.513 に答える