【问题标题】:Edit Mode pulls all records from default SelectMethod on ObjectDataSource after filtering records on alternate SelectMethod编辑模式在过滤备用 SelectMethod 上的记录后,从 ObjectDataSource 上的默认 SelectMethod 中提取所有记录
【发布时间】:2012-07-27 20:18:17
【问题描述】:

我知道有人会想要解决这个问题的代码,但是 Gridview、对象数据源及其所有相关事件的管道代码以及连接的业务对象太多了,无论我如何压缩它.不过我觉得这个问题还是可以回答的。

我有一个与 ASP.NET Gridview 关联的 ObjectDataSource 和一个名为 GetALLNames 的默认 SelectMethod。这个方法说默认带回 100 条记录,并将它们绑定到 GridView。

但是,在此页面上,我有一个“搜索”按钮(在网格之外),用户可以在其中选择一个名称并按“搜索”。 Search 按钮将 .SelectMethod 更改为 GetNameByID,返回列表,并将短过滤列表绑定到 Gridview。这也很好用,因为 GridView 中只有 1 条记录。

现在的问题是,当我按此 GridView 上的 编辑 按钮进入显示单个记录的编辑模式时,对象数据源似乎正在从默认 重新获取所有记录GetALLNames 方法通过缓存(我在 ODS 上有 EnableCaching="True")。结果? GridView确实进入了编辑模式,但是对于 100 条原始记录中的第 1 条记录,没有在单个过滤记录上进入编辑模式。

有没有办法阻止 ODS 从缓存中的默认列表重新获取 调用原始的 GetALLNames 方法,而只是进入编辑模式单条记录?

谢谢!

【问题讨论】:

    标签: gridview objectdatasource


    【解决方案1】:

    一个类似的问题让我困惑了一段时间。最终让我眼前一亮的是这句话:

    ObjectDataSource 控件创建和销毁 每个方法调用的类;它不会将对象保存在内存中 Web 请求的生命周期。

    在我的例子中,ODS 对象依赖于在调用 select 方法之前设置的属性(即 ODS.partNumber="123" 后跟 ODS.getPart)。

    为了使 ODS 正常运行,我必须在关联的 GridView 的 _RowEditing、_RowUpdating 和 _RowCancellingEdit 处理程序中填充对象所需的属性。这样,当 ODS 对象在单击 GridView 中的任何按钮时重建时,所有必需的属性都已设置。

    在您的情况下,它可能不会以同样的方式完全应用,但它可能是相关的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多