Я пытаюсь добавить пользовательский пейджинг на свой сайт, используя пейджинг ObjectDataSource. Я считаю, что правильно добавил хранимые процедуры, которые мне нужны, и перенес их через DAL и BLL. У меня проблема в том, что когда я пытаюсь использовать его на странице, я получаю пустую сетку данных.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs" Inherits="developer_PageTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ObjectDataSource ID="ObjectDataSource1" SelectMethod="GetMessagesPaged" EnablePaging="true"
SelectCountMethod="GetMessagesCount" TypeName="MessageTable" runat="server" >
<SelectParameters>
<asp:Parameter Name="DeviceID" Type="Int32" DefaultValue="112" />
<asp:Parameter Name="StartDate" Type="DateTime" DefaultValue="" ConvertEmptyStringToNull="true"/>
<asp:Parameter Name="EndDate" Type="DateTime" DefaultValue="" ConvertEmptyStringToNull="true"/>
<asp:Parameter Name="BasicMatch" Type="Boolean" ConvertEmptyStringToNull="true" DefaultValue="" />
<asp:Parameter Name="ContainsPosition" Type="Boolean" ConvertEmptyStringToNull="true" DefaultValue="" />
<asp:Parameter Name="Decoded" Type="Boolean" ConvertEmptyStringToNull="true" DefaultValue="" />
<%-- <asp:Parameter Name="StartRowIndex" Type="Int32" DefaultValue="10" />
<asp:Parameter Name="MaximumRows" Type="Int32" DefaultValue="10" />
--%> </SelectParameters>
</asp:ObjectDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1" AllowPaging="true" PageSize="10"></asp:GridView>
<br />
<asp:Label runat="server" ID="lblCount"></asp:Label>
</div>
</form>
</body>
</html>
Когда я устанавливаю для параметра EnablePaging значение false в ODS и добавляю закомментированные параметры StartRowIndex и MaximumRows в разметку, я получаю данные, поэтому на самом деле кажется, что уровень данных ведет себя так, как должен. В кодовом файле есть код для помещения значения вызова GetMessagesCount в lblCount, и в нем всегда есть разумное значение.
Я попытался взломать BLL и пройти через него, и вызывается серверная часть, и она возвращает то, что похоже на правильную информацию и данные, но каким-то образом между ODS и GridView оно исчезает.
Я создал фиктивный источник данных, который возвращал пронумерованные строки случайных чисел, и прикрепил его к этой форме, и пользовательский пейджинг сработал, поэтому я думаю, что мое понимание техники хорошее. Я просто не понимаю, почему это терпит неудачу здесь!
Любая помощь очень ценится.
(РЕДАКТИРОВАТЬ ... вот код).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
public partial class developer_PageTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblCount.Text = String.Format("Count = {0}", MessageTable.GetMessagesCount(112, null, null, null, null, null))
}
}