我有一个ASP ListView,用于在表格中显示一些透视信息(跨年)。目前我将ListView模板定义为:
<LayoutTemplate>
<table id="listViewTable" class="tableData">
<tr class="rowHeader">
<td style="text-align: left;">Rank / Equivalent Rank</td>
<td>2004</td>
<td>2005</td>
<td>2006</td>
<td>2007</td>
<td>2008</td>
<td>2009</td>
<td>2010</td>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<%#addListViewSectionHeaderRow()%>
<%#addListViewRankValueCell()%>
<td class="cellNumeric"><%#formatNumber(Eval("2004"))%></td>
<td class="cellNumeric"><%#formatNumber(Eval("2005"))%></td>
<td class="cellNumeric"><%#formatNumber(Eval("2006"))%></td>
<td class="cellNumeric"><%#formatNumber(Eval("2007"))%></td>
<td class="cellNumeric"><%#formatNumber(Eval("2008"))%></td>
<td class="cellNumeric"><%#formatNumber(Eval("2009"))%></td>
<td class="cellNumeric"><%#formatNumber(Eval("2010"))%></td>
</tr>
</ItemTemplate>
正如您在Eval()
语句中所看到的,幕后查询中的列已经选择了页面上显示的年份。
如何在LayoutTemplate
中显示查询中的列名而不是我拥有的硬编码值?我觉得在某个地方的文档中很容易找到,但我找不到任何东西......但也许我找不到合适的地方......
谢谢!
编辑:我想在定义Eval()
语句中的实际年份时也遇到问题。我希望尽可能自动化,因此,例如,当出现2011年数据时,该页面仅反映了2005 - 2011年。也许我在考虑这个目标时做了一些根本错误的事情?
答案 0 :(得分:2)
ListView或GridView,这应该很简单。只要您总是希望将此基于当年,您就可以这样做:
<asp:ListView ID="ListView1" runat="server">
<LayoutTemplate>
<table id="listViewTable" class="tableData">
<tr class="rowHeader">
<td style="text-align: left;">Rank / Equivalent Rank</td>
<td><%= DateTime.Today.AddYears(-6).Year%></td>
<td><%= DateTime.Today.AddYears(-5).Year%></td>
<td><%= DateTime.Today.AddYears(-4).Year%></td>
<td><%= DateTime.Today.AddYears(-3).Year%></td>
<td><%= DateTime.Today.AddYears(-2).Year%></td>
<td><%= DateTime.Today.AddYears(-1).Year %></td>
<td><%= DateTime.Today.Year %></td>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<%#addListViewSectionHeaderRow()%>
<%#addListViewRankValueCell()%>
<td class="cellNumeric"><%#formatNumber(Eval(DateTime.Today.AddYears(-6).Year.ToString()))%></td>
<td class="cellNumeric"><%#formatNumber(Eval(DateTime.Today.AddYears(-5).Year.ToString()))%></td>
<td class="cellNumeric"><%#formatNumber(Eval(DateTime.Today.AddYears(-4).Year.ToString()))%></td>
<td class="cellNumeric"><%#formatNumber(Eval(DateTime.Today.AddYears(-3).Year.ToString()))%></td>
<td class="cellNumeric"><%#formatNumber(Eval(DateTime.Today.AddYears(-2).Year.ToString()))%></td>
<td class="cellNumeric"><%#formatNumber(Eval(DateTime.Today.AddYears(-1).Year.ToString()))%></td>
<td class="cellNumeric"><%#formatNumber(Eval(DateTime.Today.Year.ToString()))%></td>
</tr>
</ItemTemplate>
</asp:ListView>
真的,我所做的就是告诉表单使用当前年份减去X.这样,年份会根据表单的查看时间自动更改。
我无法测试这个,所以原谅我的错字,如果有的话。
答案 1 :(得分:0)
如果您没有使用ListView设置死机,则可以使用GridView将AutoGenerateColumns
属性设置为true。这样,结果表将自动从结果集中选取所有可用列。