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

Code-за:

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

Вы используете пейджинг? не могли бы вы опубликовать код Gridview и код доступа к данным –

+0

Что такое тип столбца по причине? Это текст/blob? –

+0

@ Kris Krause, это текст. –

ответ

3

Вы можете попробовать следующее?

  1. Посмотрите на исходный код страницы, сгенерированной, когда строка не отображается ... это строка, не попавшая в страницу вообще? Или это просто не отображается по какой-то причине?

  2. У вас есть третья строка, когда она не появляется, перейдя на следующую страницу? Временно выньте команды подкачки из кода aspx, чтобы узнать, разрешает ли это это.

  3. Проверьте, что сервер обновлен со всеми пакетами обновлений и т. Д. Для базы данных, ОС и IIS.

  4. Какая версия IIS работает? Какая серверная ОС?

  5. Можете ли вы разместить код позади gvPayments_PageIndexChanging и любой код, который у вас есть, для построения сетки?

  6. Какой браузер вы используете, чтобы просмотреть результаты? Когда вы получите сообщение об ошибке, можете ли вы попробовать другой браузер или другую машину? И вы получаете тот же результат?

  7. Забыл biggie ... Можете ли вы разбить после gvPayments.DataSource= GetPayments(pensionerID);? Вы получаете все три строки, извлеченные из базы данных? Возможно, ваша проблема не в коде aspx, а в данных, к которым вы возвращаетесь, чтобы привязываться.

Будет думать больше, пока вы публикуете их.

+0

1. Я проверяю это, и источник html не содержит эту строку вообще. 2. Размер сетки равен трем, поэтому страницы не отображаются, потому что в сетке есть в основном 2 строки. 4. Сервер - Win server 2003. 6. Я использую IE7 для просмотра результатов. Я проверил его в Mozilla, но получаю те же результаты. –

0

Это SQL Server? Запустите профайлер и посмотрите, какой оператор select фактически передается в SQL Server. Вы можете скопировать его в Management Studio и выполнить, чтобы узнать, есть ли у вас 2 или 3 записи. Нет, вероятно, не выполняется точный оператор select, который вы передаете в него, и единственный способ узнать, что он работает, - это профилировать его ...

Это точно скажет вам, связано ли это SQL или GridView вызывает проблему ...

+0

База данных Oracle –

+0

Я не знаком с Oracle, но я уверен, что есть параллельная функциональность. Вам нужно выяснить, что такое оператор, который фактически выполняется. – HackyStack