下午好女士们和男士们 -
我的任务是找到并修复一个不熟悉的遗留应用程序中的错误,该应用程序最近做了一些更改,但我没有一种简单的方法(我知道)来测试我的理论。我希望你的集体知识能够为我验证测试。
此应用程序延迟将查找列表(绕口令?)从数据库加载到DataTable
中,并将它们存储为HttpContext.Current.Application
中的对象(HttpApplicationState
)。
在进行更改之前,其中一个查找表以下列方式绑定到DropDownList
(设计):
Me._lookupList = TheSession.LookupCache.SomeLookupListName.DefaultView
...
ddl.DataSource = Me._lookupList
其中'SomeLookupListName'是一个只读属性,从DataTable
返回HttpContext.Current.Application
。这些更改添加了一些代码,用于在绑定到Me._lookupList
之前过滤私有DataView
(DropDownList
):
Me._lookupList.RowFilter = "SomeTableIDColumn <> " & ...
如果您还没有猜到,正在发生的事情是,DataView
现在已针对应用程序的每个用户进行过滤。我查看了代码,发现大多数其他查找列表都以这种方式复制到本地成员:
Me._lookupList = New DataView(TheSession.LookupCache.SomeLookupListName)
由于我不知道如何攻击我的本地调试会话冒充多个用户,将改变代码使用后一种方法实际上与前者有什么不同?筛选DataTable.DefaultView
的结果是否实际上将过滤器应用于基础DataTable
的方式与使用New DataView(...)
包装表格的方式不同?
在绑定DropDownList
之后简单地清除行过滤器是否有意义(似乎是一个糟糕的解决方案)?我想坚持使用这个应用程序使用的丑陋约定,这样我就不会让另外一个开发人员感到惊讶,他会得到类似的任务,否则我只是绕过应用程序状态并从数据存储库中获取项目
感谢您的反馈意见。
答案 0 :(得分:1)
过滤结果 DataTable.DefaultView实际应用 过滤到底层的DataTable 与包裹表格不同 使用新的DataView(...)?
是。它会创建一个应用过滤器的新视图。过滤器不直接应用于表。遵循使用新模式的模式将起作用。
BTW,很容易针对您的调试器测试多个会话。只需打开两个不同的浏览器(IE和FF)并指向同一个应用程序。用户登录可能相同,但会话将是唯一的。