使用 SQL #tempdb 绑定到 ListBox

3
我正在创建一个网页,其中有一系列的ListBoxes。在每个ListBoxes中都有一个源(包含许多选项),您可以选择一个或多个选项并将其添加到第二个ListBoxes中。
我已经创建了一些永久性的表格,其中包含源ListBoxes的静态成员。然而,我想使用“SELECT * INTO #tempsrc1 FROM src1”,然后将#tempsrc1绑定到ListBoxes上。从那里创建#tempdst1用于目标ListBoxes绑定。然后,任何选择都会相应地来回移动。
虽然绑定到永久数据库很容易,但我遇到了麻烦(如果可能的话)绑定到其余部分设置的#tempdb上。我对SQL还不是很了解,也没有坚实的架构理解力。

感谢您提供的所有见解,我对ASP和SQL都比较陌生。我认为最好的方法是重新调整这个设置。 - Hub3rt
如果您认为某个答案是相关和有帮助的,请通过点击向上指向的三角形来投票支持它。最佳答案应该通过点击其旁边的勾选标记来标记为已接受。 - Anders Abel
@Anders 我还没有足够的15个点数去这样做...否则我会的。 - Hub3rt
抱歉,我不知道投票限制也适用于自己的问题。 - Anders Abel
4个回答

1

我认为你的设计有问题。

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

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


我很担心这个问题。我尝试使用数据库的原因是,我正在使用的某个列表框控件在发布后会清除数据,除非它是数据绑定的,而绑定到类似ArrayList之类的东西不起作用,可能必须切换列表框。这些列表框必须从数据库中填充,该网站是我所在大学材料工程研究的大型数据库,研究人员有许多选择,例如技术等。 - Hub3rt

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

1

源Listbox有一个selectedindexchanged事件。

使用该事件来:
1)创建一个listbox项
2)将listbox项设置为源的选定项
3)items.add或items.insert listbox项到您的目标listbox中。

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


由于某种原因,Obout ListBoxes在没有数据绑定的情况下无法保留数据。在提交时无法使用removeAt(i)而不出错,因为列表框会清除,然后才执行删除操作,导致索引越界问题。我想我必须重新考虑列表框的功能与外观之间的平衡。 - Hub3rt

0

我在使用临时表处理WinForms应用程序时遇到了同样的问题。您的应用程序需要绑定到永久表,而不能绑定到存储在SQL服务器中的临时表。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接