3

我正在创建一个网页,其中有一系列对ListBoxes。在每一对中都有一个源(包含许多选项),然后您可以在其中选择一个(或多个)选项并将其添加到第二个列表框中。

我创建了一些永久表,其中包含源列表框的静态成员;但是,我想使用“ SELECT * INTO #tempsrc1 FROM src1”,然后将其绑定#tempsrc1到 ListBox。从那里将为目标 ListBox 绑定创建一个#tempdst1。然后任何选择都会相应地从那里来回移动。

虽然绑定到永久数据库很容易,但在其余部分绑定到#tempdb 设置时我遇到了麻烦(如果可能的话),我对 SQL 很陌生,对架构没有扎实的理解。

4

4 回答 4

1

我认为你的设计是错误的。

临时数据不应该保存在数据库中,而应该保存在应用层。在有两个列表框的情况下,您可能能够使用列表框本身来跟踪项目。如果您需要保留与列表框中显示的文本相关的数据,我建议您将 aDictionary<>放入Session对象中。

在可能使用不同数据库连接的不同请求之间保持#temptable 活动也可能很棘手。除非您将数据库连接存储在Session我认为连接池重置数据库连接时#temptables 将丢失。

于 2011-07-27T16:55:34.567 回答
1

我建议不要使用临时数据库。因为新连接可能会丢失该值。如果需要,使用永久表并将列表框数据放入缓存中。

于 2011-07-27T16:59:35.530 回答
1

源列表框有一个 selectedindexchanged 事件。

使用该事件:
1)创建一个列表框项
2)设置列表框项 = 源的选定项
3)items.add 或 items.insert 列表框项到您的目标列表框。

这是相当标准的。但不要在数据库中使用临时表。正如@Andres 所说,跟踪您的应用程序层。In 能想到的唯一例外是,如果您需要在会话范围之外进行跟踪。

于 2011-07-27T17:04:36.207 回答
0

我在使用 winforms 应用程序的临时表时遇到了同样的问题。您的应用程序需要绑定到永久表,不能绑定到存储在 SQL Server 中的临时表。

您可以创建一个将返回所需数据的存储过程。

于 2011-07-27T16:56:55.583 回答