- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在混合使用 ListView + DataPager + ObjectDataSource。
在我的 ObjectDataSource 的 SelectMethod 的实现中,我想访问在 PageLoad() 事件中设置的全局变量(该方法将只返回每页正确数量的项目)。尽管该变量在 PageLoad() 中初始化,但它在 SelectMethod 中似乎为空。我该如何改变它?
<asp:ObjectDataSource ID="ItemsObjectDataSource" runat="server" EnablePaging="True"
SelectMethod="WrapSearchResults" SelectCountMethod="CountSearchResults"
TypeName="Catalogue">
<SelectParameters>
<asp:QueryStringParameter Name="startRowIndex" QueryStringField="page" Type="Int32" DefaultValue="0" />
<asp:Parameter Name="maximumRows" Type="Int32" DefaultValue="10" />
</SelectParameters>
</asp:ObjectDataSource>
SearchOption search;
protected void Page_Load(object sender, EventArgs e)
{
search = new SearchOption(SessionParameters.Get(Session).User);
}
public IEnumerable<ResultWrapper> WrapSearchResults(int startRowIndex, int maximumRows)
{
search.Limit = maximumRows; <-- null pointer exception
}
最佳答案
这是对象数据源的常见问题。你必须永远记住这一点:
ODS会通过反射调用指定的方法,而不是对象的具体实例。(除非您自己指定要使用的实例)
该值为 null,因为 ODS 直接调用了该方法,它从来不是 asp.net 页面生命周期的一部分。
如果您确实需要这样做,请将全局变量设置为 STATIC。
protected **static** SearchOption search;
如果您查看堆栈跟踪,就在空异常之前,您应该会看到框架反射调用。这应该会提示您正在发生的事情!
这是 MSDN 引用:
http://msdn.microsoft.com/en-us/library/ms227436.aspx
如果您的对象具有实例方法而不是静态方法(共享在 Visual Basic 中)。因此,您的对象必须是无状态的。也就是说,您的对象应该在单个请求的范围内获取和释放所有必需的资源。
您可以通过处理 ObjectDataSource 控件的 ObjectCreating 事件来控制源对象的创建方式。您可以创建源对象的实例,然后将 ObjectDataSourceEventArgs 类的 ObjectInstance 属性设置为该实例。 ObjectDataSource 控件将使用在 ObjectCreating 事件中创建的实例,而不是自己创建实例。
关于c# - 如何在 ObjectDataSource.SelectMethod 中使用全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686644/
我有一个启用编辑的 GridView ,所以当我编辑用户时出现错误: ObjectDataSource 'ObjectDataSource1' 找不到具有参数的非泛型方法 'Update': 我还使用
在我的 C# .NET Web 应用程序中,我有一个绑定(bind)到 ObjectDataSource 的 GridView。此 ObjectDataSource 使用我的 App_Code 文件夹
我正在开发 asp.net 3.5 项目。 当我想用 DetailsView 插入时,出现了这个错误: 错误:ObjectDataSource“ObjectDataSource2”找不到具有参数的非通
我有这个 ASP.NET 代码: 我的 DAL 代码: public DataTable GetBrokers(bool? hasImport=null) { SqlCommand cm
我正在使用 ObjectDataSource 来排序/分页/过滤,如下所示: 使用 ObjectDataSou
我有一个服务层公开了一些方法,这些方法在我的 asp.net 应用程序的 ObjectDataSource 中使用。 服务类的构造函数有一个参数,只是一个int,用于跟踪当前登录的用户: public
我的 ObjectDataSource 是这样实例化的: 选择、插入、更新方法如您所愿;选择所有数据,插入数据和更新数据。我的问题是,有没有办法可以分配另一种方法,例如第二个选择选择不同的数据或者可
我正在使用 visual studio 2008,我在 AppCode 文件夹中包含了一个类,并希望在 ObjectDataSource 中使用它的函数。 最佳答案 在 aspx 中 在 .cs
前台代码: 复制代码代码如下: <asp:GridView ID="viewIShow" runat="server"
我正在使用 ObjectDataSource 来执行 CRUD 操作。出于某种原因,我收到“ObjectDataSource‘ObjectDataSource1’没有要插入的值。检查‘values’字
如果网页需要一些数据,为什么不让 SQLDataSource 调用存储过程呢?为什么要使用 ObjectDataSource 调用业务对象,然后再调用存储过程?我知道基于 .net 框架构建的其他应用
我正在使用 GridView 处理 ASP.NET 页面和 ObjectDataSource . 我想针对我的业务层中的一个类(用 DataObject() 装饰)配置 ObjectDataSourc
我正在尝试将此绑定(bind)到gridview .. var source = from p in allComments select new { p.Img,
我有一个 GridView ,它绑定(bind)到一个从学生类型中选择数据的对象数据源 public class student { int id; string name; int
在我的公司中,很少有员工使用 ObjectDataSource。示例片段是: Sele
我正在将旧网站更新为更现代的外观。他们希望能够 CRUD 他们的数据表,这样用户就可以轻松地编辑/更新/删除内容,而无需转到特殊页面。 为此,我为他们的旧方法设置了一个 ObjectDataSourc
我有一个文本框,其值存储 ValidFrom 表单值: 31.01.2012 文化设置为: 在 web.config 中。 现在,ObjectDataSource 更新方法: public
如果下拉列表在范围内,我如何设置下拉列表的选定值Gridview 和下拉列表在编辑时由 objectdatasource 填充按钮被点击? 我的应用发生了什么情况是下拉列表被填充但第一项始终显示为选定
我无法从我的 C# 代码中找到简单问题的答案:如何手动清除 ObjectDataSource 缓存。在带有一些 DevExpress 组件的 Visual Studio 2010 中将 ASP.NET
我正在尝试使用启用分页的 ObjectDataSource。这需要我使用 SelectCountMethod(这样网格才能知道有多少页)。我的 ObjectDataSource 看起来像这样:
我是一名优秀的程序员,十分优秀!