我知道有人会想要这个问题的代码,但Gridview的管道代码,对象数据源及其所有相关事件,以及有线业务对象太多了,无论我如何压缩它。不过,我认为这个问题仍然可以回答。
我有一个与ASP.NET Gridview关联的ObjectDataSource和一个名为 GetALLNames 的默认SelectMethod。此方法默认情况下会返回100条记录,并将它们绑定到GridView。
然而,在这个页面上,我有一个“搜索”按钮(网格外),用户可以选择一个名称并按“搜索”。 “搜索”按钮将.SelectMethod更改为 GetNameByID ,返回列表,并将短筛选列表绑定到Gridview。这也很有效,因为GridView中只有1条记录。
现在问题是,当我按下此GridView上的编辑按钮进入显示的单个记录的编辑模式时,对象数据源似乎是从默认重新获取所有记录通过缓存获取GetALLNames 方法(我在ODS上有EnableCaching="True"
)。结果? GridView 确实进入编辑模式,但是对于100个原始文件中的第一个记录,以及不进入单个过滤记录的编辑模式。
有没有办法阻止ODS从Cache 或中的默认列表中重新调用原来的 GetALLNames 方法,而只是进入编辑模式单一记录?
谢谢!
答案 0 :(得分:0)
类似的问题让我感到困惑了一段时间。终于为我点了点光的是这句话:
ObjectDataSource控件创建并销毁该实例 每个方法调用的类;它没有将对象保存在内存中 Web请求的生命周期。
就我而言,ODS对象依赖于在调用select方法之前设置的属性(即ODS.partNumber="123"
后跟ODS.getPart
)。
为了使ODS正常运行,我必须在关联的GridView的_RowEditing,_RowUpdating和_RowCancellingEdit处理程序中填充对象的必需属性。这样,当单击GridView中的任何按钮时,当ODS对象重建时,所有必需的属性都已设置。
在您的情况下,它可能不会以相同的方式应用 ,但它可能是相关的。