2012-05-01 138 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