c# - 如何只显示一个结果表,即从对象数组列表绑定(bind)到数据网格的结果?

标签 c# arraylist datagrid

我有一个 foreach从集合 TimeEntriesCollection 中创建新对象调用 Time 的循环.循环后,对象将被添加到 ArrayList 中称为 entryList .

ArrayList通过一种方法传递给 DataGrid显示结果,为不同的用户显示单独的表,这也意味着单独的标题。如何在没有重复标题的情况下在一个表格中显示所有对象?

下面显示了 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>

编辑:

DataList用于获取 DataSource 的第二个参数的 DataGrid .原始参数为 (int)DataBinder.Eval(Container.DataItem, "UserID") ,我认为这意味着只有 1 个用户,所以我将其替换为 _userIDs (这是一个带逗号的整数字符串,将在存储过程中处理)。但是如果我删除 DataList标记并将第二个参数替换为 _userIDs ,什么也没有出现。随着DataList标签仍然存在,我得到的输出就是我在顶部声明的内容。

最佳答案

我认为您已经制作了一个嵌套的转发器,您位于生成一个表的单个转发器之后。考虑以下设置:

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;

关于c# - 如何只显示一个结果表,即从对象数组列表绑定(bind)到数据网格的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16911413/

相关文章:

c# - 在 C# 中使用 C++ CLI 模板类

Java-同步列表

java - 快速搜索 arrayList 的方法

c# - WPF Datagrid 排序索引问题

json - Dojo 中的 DataGrid ,带有来自 servlet 的 json 数据

c# - 某些东西阻塞了我的内存,程序卡在 GC.Collect() 或 GC.GetTotalAmountOfMemory(true) 上

c# - ASP.NET C# : JavascriptSerializer could not be found

c# - 在 C# 中将字节数组转换为包含字节数组的类

java - 从字符串中过滤单词

c# - 如何判断 DataGrid 的哪一行被单击?