我的总体目标是将假/未绑定项添加到listview控件(最终HTML表输出原因)。这是一个代码隐藏的解决方案。用户不会添加项目,因为它将在严格的表格中输出。
我已经查看了几个示例,虽然这对于下拉列表很容易,但不适用于listview。
下面的代码可以正常运行,但我的项目不会在运行时显示。我认为该类没有正确设置item fieldname,但我无法找到正确的语法来修复它。
ColumnNameAList.DataSource = PeriodDataView
ColumnNameAList.DataBind()
Dim test As New Example1("ColumnNameA")
Dim newItem As New ListViewDataItem(ColumnNameAList.Items.Count, ColumnNameAList.Items.Count)
newItem.DataItem = test
ColumnNameAList.Items.Insert(ColumnNameAList.Items.Count, newItem)
ColumnNameAList.Items.Add(newItem)
这是应该设置DataValueField的Example1类:
Public Class Example1
Public Sub New(ColumnNameA__1 As String)
ColumnNameA = ColumnNameA__1
End Sub
Private m_ColumnNameA As String
Public Property ColumnNameA() As String
Get
Return m_ColumnNameA
End Get
Set(value As String)
m_ColumnNameA = value
End Set
End Property
End Class
这会输出我的原始数据源列表,但不会输出添加的项目。
<ItemTemplate>
<td>
<%# Eval("ColumnNameA")%>
</td>
</ItemTemplate>
答案 0 :(得分:1)
最后,我只能通过代码隐藏解决方案可靠地解决这个问题。 我制作了原始数据源的副本,修改了我的副本,然后数据绑定到它。
Dim MyOriginalTableSource As Data.DataView = DataManager.example()
Dim ModifiedTable As DataTable = MyOriginalTableSource.ToTable
'do stuff here
Mylistbox.DataSource = ModifiedTable
Mylistbox.DataBind()
不适用于所有人,但在这种情况下,它对我来说很好。
答案 1 :(得分:0)
您接近此方式可能会遇到一些问题,包括ListView已经是数据绑定,并且您正在添加和插入newItem。
当我们有这样的场景时,我们采用以下两种方法之一:
1)在源绑定数据之前,将新项添加到数据源。
2)删除数据绑定并手动创建每个列表视图项,然后在循环的开头或结尾添加新项。
答案 2 :(得分:0)
另一种方法是将它注入sql。
select col1, col2, col3 from table1 union select '1','2','3'
这将确保始终添加项目,并且asp.net不需要知道或关心。
您可以将其添加到sql查询中,或者在绑定查询之前从后面的代码中添加它。如果你没有使用sql绑定,你也可以使用LINQ
对任何列表项执行此操作