使用SQL #tempdb将databind()转换为ListBox

时间:2011-07-27 16:51:58

标签: c# asp.net sql data-binding tempdb

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

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

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

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

Source Listbox有一个selectedindexchanged事件。

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

这是非常标准的。但是不要在数据库中使用临时表。正如@Andres所说,跟踪您的应用层。可以想到的唯一例外是你是否需要跟踪会话的范围。

答案 3 :(得分:0)

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

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