一般问题:
我正在尝试创建类似的东西:
用户可以从下拉列表中选择一个产品,单击添加,结果是在“已添加产品”部分下方添加了另一个产品行。必须为通过每行中的下拉列表添加的每个产品选择“产品描述符”。只有当用户单击“提交”按钮时,每个产品行才会插入到数据库中。
问题:
在回发之间保持产品选择的最佳方式是什么?
我不担心坚持“产品描述符”选择,我相信我可以做到。我主要关心的是在将这些临时选择保存到数据库之前找到存储这些临时选择的最佳方法。
我目前的做法:
我现在这样做的方式是管理视图状态中的 ProductListItem 对象列表。此列表绑定到显示添加的产品的 ListView。
Private Property SelectedProductList As List(Of ProductListItem)
Get
Return CType(ViewState("SelectedProductList"), List(Of ProductListItem ))
End Get
Set(ByVal value As List(Of ProductListItem ))
ViewState("SelectedProductList") = value
End Set
End Property
ProductListItem 类:
<Serializable()>
Public Class ProductListItem
Public Property ProductID As Integer
Public Property ProductName As String
' ProductDescriptor class represents Product Descriptor (details omitted)
Public Property Descriptor As ProductDescriptor
' Constructor omitted
End Class
添加按钮单击处理程序:
Protected Sub btnAddProduct_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddProduct.Click
SelectedProductList.Add( New ProductListItem(...) )
ProductListView.DataSource = SelectedProductList
ProductListView.DataBind()
End Sub
我正在考虑在这里使用 Session 而不是 Viewstate,因为我在同一页面上还有另外两种类似的情况,我在 viewstate 中保留对象列表,我担心 Viewstate 被损坏或得到太大。你怎么看?
谢谢你的时间!