【发布时间】:2011-01-18 18:09:11
【问题描述】:
我正在尝试使用 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>
当我在 ODS 上将 EnablePaging 设置为 false,并在标记中添加注释掉的 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))
}
}
【问题讨论】:
-
你是否在页面的代码隐藏中做任何事情,在黑暗中拍摄你是否禁用了视图状态。
-
嗨!我在上面添加了代码......那里没什么。
标签: asp.net objectdatasource data-access-layer custompaging custom-paging