2010-02-17 4 views
0

테이블에 피벗 정보 (몇 년 동안)를 표시하는 데 사용하는 ASP ListView가 있습니다. 현재 내가 정의리스트 뷰 템플릿이 : 당신이 Eval() 문에서 볼 수 있듯이 그들은이 페이지에 표시됩니다으로ASP 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> 

는, 배후 쿼리의 열이 이미 수년 선택합니다.

내가 가지고있는 하드 코딩 된 값 대신 LayoutTemplate에있는 쿼리의 열 이름을 어떻게 표시합니까? 문서에서 어딘가에 쉽게 찾을 수있을 것이라고 생각했지만 아무 것도 찾을 수 없지만 올바른 장소를보고 있지는 않습니다 ...

감사합니다!


편집 : 나는 또한 Eval() 문에 실제 년 정의에 문제가있는 것 같아요. 가능한 한 자동으로 이것을 가져오고 싶습니다. 예를 들어 2011 데이터가 나타나면 페이지는 2005 년에서 2011 년까지만 반영됩니다. 아마도 나는 그 목표에 근본적으로 잘못된 것을하고 있습니다.

답변

2

ListView 또는 GridView, 이것은 매우 쉬워야합니다. 만큼 당신이 항상 현재 연도에이 기준이 원하는대로, 당신은 다음과 같이 수행 할 수 있습니다 올해 마이너스 X.에게 그 방법을 사용하는 형태를 말하는

<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> 

정말, 내가 뭘 모든이를의 양식을 볼 때 자동으로 연도가 변경됩니다.

나는 이것을 테스트 할 수 없었으므로 오타를 용서해주십시오.

+0

하하 ... 사람은 프로그래밍 방식의 날짜를 사용하는 것만 생각하지 않았습니다. 아마도이 방향으로 가서 데이터를보고 데이터의 최신 유효 연도를 결정하고 현재 연도가 아닌 그 곳에서 이동할 것입니다. 이 두 가지 문제를 해결, 그 전구를 전환 주셔서 감사합니다 :) – chucknelson

0

ListView를 사용하지 못하게 설정하지 않은 경우 AutoGenerateColumns 속성을 true로 설정 한 GridView를 대신 사용할 수 있습니다. 이렇게하면 결과 테이블에서 결과 집합의 사용 가능한 모든 열을 자동으로 선택합니다.

관련 문제