ObjectDataSource 페이징을 사용하여 내 사이트에 사용자 지정 페이지를 추가하려고합니다. 나는 내가 필요로하는 저장 프로 시저를 올바르게 추가했다고 믿고 DAL과 BLL을 통해 가져왔다. 문제는 페이지에서 사용할 때 비어있는 DataGrid를 얻게된다는 것입니다. 정말 예상대로 데이터 층이 행동처럼 보인다 있도록 ASP.NET에서 사용자 지정 호출 문제가 발생했습니다.
<%@ 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에 false로 EnablePaging를 설정하고 마크 업에 주석 StartRowIndex 및 MaximumRows PARAMS를 추가
, 나는 데이터를 얻을. 코드 파일에는 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))
}
}
페이지의 코드 숨김에서 무엇을하고 있든, 어둠 속에서도 viewstate를 비활성화했습니다. – RubbleFord
안녕하세요. 나는 뒤에 코드를 추가했다. – JohnCC