0

我正在尝试使用 aGridView来显示从 SQL Server 中提取的表。它是事件的日志。我已将GridView控件与控件一起放在我的页面上ObjectDataSource。我已经配置了:

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title></title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
    <asp:GridView ID="gvHistory" runat="server" DataSourceID="dsHistory">
    </asp:GridView>
    <asp:ObjectDataSource ID="dsHistory" runat="server" SelectMethod="GetHistoryRows"
        TypeName="AspDotNetStorefrontAdmin.ROIImportHistory"></asp:ObjectDataSource>
    </form>
</body>
</html>

我在App_Code文件夹中创建了一个类,如下所示:

Imports System.Data

Namespace AspDotNetStorefrontAdmin

    Public Class ROIImportHistory

        Public Shared Function GetHistoryRows() As DataTable

            Dim localDatatable As New DataTable

            localDatatable.Columns.Add()
            localDatatable.Columns.Add()
            localDatatable.Columns.Add()
            localDatatable.Rows.Add(New Object() {"Hi", "Hi2", "Hi3"})

            Return localDatatable

        End Function
    End Class

End Namespace

但是,当我尝试运行它时出现以下异常:

出了什么问题?我以为我在这里做了一件非常基本的事情。我已经尝试了很多不同的选项,我所知道的是,如果我删除GridViewObjectDataSource. DataTable如果我直接绑定到GridView东西也可以正常工作。

我的目的是在过滤的同时获得真正的分页。鉴于我可以处理的不仅仅是DataTable每次页面加载时都不想加载。

Server Error in '/' Application.
Exception of type 'System.OutOfMemoryException' was thrown.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.]
   System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) +0
   System.Web.UI.Util.GetTypeFromAssemblies(ICollection assemblies, String typeName, Boolean ignoreCase) +201
   System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +302
   System.Web.UI.WebControls.ObjectDataSourceView.GetType(String typeName) +70
   System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +1692
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +27
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +261
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82
   System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +95
   System.Web.UI.Control.EnsureChildControls() +146
   System.Web.UI.Control.PreRenderRecursiveInternal() +61
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3394


Version Information: Microsoft .NET Framework Version:2.0.50727.6400; ASP.NET Version:2.0.50727.6387 

我已经引用了这个无济于事。

注意:我发现此代码运行良好,加载到同一应用程序池中同一服务器上的另一个站点。因此,我认为这与配置问题有关。

4

2 回答 2

0

我认为您可能在这里错误地使用了 ObjectDataSource。

我对 ObjectDataSource 的理解是你给它一个记录类型,以及一个“选择方法”,它将返回你的记录数据类型的集合。

或者,将实体框架与 ObjectDataSource 一起使用

于 2013-05-15T00:32:26.570 回答
0

我不确定这是不是你的问题的原因,但是在我使用 ObjectDataSource 控件的那一天(在 MVC 出现之前),我曾经不得不用 DataObject 属性装饰数据源类,用 DataObjectMethod 装饰数据获取方法属性,否则 ObjectDataSource 控件不会绑定到我的业务逻辑方法。所以在你的情况下,这意味着:

 <DataObject>
 Public Class ROIImportHistory

     <DataObjectMethod(DataObjectMethodType.Select, True)>
     Public Shared Function GetHistoryRows() As DataTable

         Dim localDatatable As New DataTable
         localDatatable.Columns.Add()
         localDatatable.Columns.Add()
         localDatatable.Columns.Add()
         localDatatable.Rows.Add(New Object() {"Hi", "Hi2", "Hi3"})
         Return localDatatable

     End Function

End Class

这些属性告诉 ObjectDataSource 控件该类及其方法可以用作数据源。同样,我不确定这是您问题的原因,但值得一试。您需要添加对 System.ComponentModel 的引用才能注册这些属性。

于 2013-05-15T02:05:36.720 回答