Dataview RowFilter正在更改.NET 4.0中的缓存数据集

时间:2012-05-09 16:07:16

标签: .net caching dataset dataview

我之前在.NET 2.0中使用过此代码,并且在很长一段时间内都表现良好。我不知道4.0是否与此有关,但我无法解释输出。我把这个代码简化了下来:

Sub page_prerender(s As Object, e As EventArgs)
    cache_list()
    Dim dstar As DataSet = Cache("dstallarchives")
    Dim viewar As DataView = dstar.Tables("archive").DefaultView

    Response.Write(viewar.Count & "<br/>") 'output 891
    viewar.RowFilter = "customerid=25"
    Response.Write(viewar.Count & "<br/>") 'output 52

    'clear the dataview, create it fresh from the cache
    viewar = New DataView
    viewar = Cache("dstallarchives").tables("archive").defaultview
    Response.Write(viewar.Count) 'output 52???
End Sub

Cache_list在具有891条记录的数据集中插入表。 52有customerid = 25。你可以在上面看到我得到的输出,当它应该是891 - 52 - 891我通常不会创建那个中间dstar数据集,而是直接从缓存对象创建数据视图。但是现在输出对我来说更没意义了。请在我的笔记本电脑遭遇3层故事之前提供帮助。

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么前面的代码采取了它的方式,但我找到了解决问题的方法。声明DataView时,请使用完整的构造函数:

viewarchive = New DataView(Cache("dstallarchives").tables("archive"), "", "", DataViewRowState.CurrentRows)

如果有人可以向我解释,我仍然希望听到它!