2012-05-01 67 views
3

我在窗體上有一個GridView。我已將其DataSource設置爲DataTable。我這樣檢索DataTable:GridView不顯示所有行

SELECT AMOUNT, ISSUEDATE,REASON FROM PAYMENTS WHERE 
PENSIONERID=113 ORDER BY ISSUEDATE DESC 

當我在服務器端運行此查詢時,我得到三個記錄。但在我的網頁上,gridview只顯示其中的兩個。在後面的代碼中沒有設置條件會導致gridview不顯示任何類型的記錄。一段時間後,我重新啓動服務器,我可以看到gridview中的第三行。這是與我的IIS有關的問題嗎?在任何情況下可能是什麼原因?謝謝。

這裏的GridView和datat加載代碼:

<asp:GridView ID="gvOdanBirm" runat="server" AllowPaging="True" 
    AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" 
    GridLines="None" OnPageIndexChanging="gvPayments_PageIndexChanging" 
    PageSize="3"> 
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
    <Columns> 
     <asp:BoundField DataField="ISSUEDATE" HeaderText="Issue date"> 
      <ItemStyle BorderColor="#01055E" BorderStyle="Solid" BorderWidth="1px" 
       HorizontalAlign="Right" Width="70px" /> 
      <HeaderStyle BorderColor="#01055E" BorderStyle="Solid" BorderWidth="1px" /> 
     </asp:BoundField> 
     <asp:BoundField DataField="AMOUNT" HeaderText="Amount"> 
      <ItemStyle BorderColor="#01055E" BorderStyle="Solid" BorderWidth="1px" 
       HorizontalAlign="Right" Width="30px" /> 
      <HeaderStyle BorderColor="#01055E" BorderStyle="Solid" BorderWidth="1px" /> 
     </asp:BoundField> 
     <asp:BoundField DataField="REASON" HeaderText="REASON" 
      > 
      <ItemStyle BorderColor="#01055E" BorderStyle="Solid" BorderWidth="1px" 
       HorizontalAlign="Left" Width="50px" /> 
      <HeaderStyle BorderColor="#01055E" BorderStyle="Solid" BorderWidth="1px" /> 
     </asp:BoundField> 
    </Columns> 
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
    <EditRowStyle BackColor="#999999" /> 
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
</asp:GridView> 

代碼隱藏:

gvPayments.DataSource= GetPayments(pensionerID); 
gvPayments.DataBind();  
+0

你使用分頁?你可以請發表Gridview代碼和你的數據訪問代碼 –

+0

什麼是列數據類型的原因?它是文本/ blob嗎? –

+0

@Kris Krause,這是一個文本。 –

回答

3

你可以試試下面的?

  1. 看看行沒有出現時產生的頁面的源代碼...是不是進入頁面的行?還是僅僅因爲某種原因沒有顯示?

  2. 如果不移動到下一個頁面,您能看到第三行嗎?暫時從aspx代碼中取出分頁命令,看看是否能解決它。

  3. 檢查服務器是否與數據庫,操作系統和IIS的所有Service Pack等保持同步。

  4. 您運行的是哪個版本的IIS?什麼服務器OS?

  5. 你可以發佈gvPayments_PageIndexChanging背後的代碼,以及你在構建gridview後面的任何代碼嗎?

  6. 你用什麼瀏覽器查看結果?當你得到錯誤時,你可以嘗試其他瀏覽器或其他機器嗎?你會得到同樣的結果嗎?

  7. 忘了biggie ...你可以打破gvPayments.DataSource= GetPayments(pensionerID);後?你是從數據庫中獲取所有三行嗎?也許你的問題不在aspx代碼中,而是在你回來綁定的數據中。

當你發佈這些內容時,你會多想一想。

+0

1.我檢查了這一點,並且html源碼根本不包含該行。 2.網格的大小是三個,所以不會出現頁面,因爲網格中基本上有兩行。 4.服務器是Win Server 2003. 6.我使用IE7查看結果。我在Mozilla上檢查過它,但得到了相同的結果。 –

0

它是SQL Server嗎?運行分析器並查看實際傳遞到SQL Server的select語句。您可以將其複製到Management Studio中並執行以查看是否獲得2或3條記錄。不,它可能沒有運行你傳入它的精確選擇語句,並且知道它運行的唯一方法是分析它...

這會告訴你一定是否它是SQL相關或GridView導致問題...

+0

數據庫是Oracle –

+0

我對Oracle並不熟悉,但我確定有並行功能。你需要找出那些正在被執行的語句。 – HackyStack