2011-12-19 11 views
1

我的總體目標是向列表視圖控件(最終HTML表格輸出原因)添加假/未綁定項目。這是解決方案背後的代碼。用戶不會添加項目,因爲它將以嚴格的表格形式輸出。在ASP Net中添加新項目以綁定ListView(無法設置數據鍵/字段名)

我已經看過幾個例子,雖然這很容易下拉它不適合listview。

下面的代碼沒有錯誤,但我的項目沒有在運行時顯示。我認爲這個類沒有正確設置項目的字段名,但是我找不到解決它的正確語法。

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的示例1類:

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

你在什麼時候調用你的插入代碼?它應該作爲['ListView.DataBound'](http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.basedataboundcontrol.databound.aspx)事件的偵聽器執行,否則數據綁定將清空手動填充的任何元素。 – lsuarez 2011-12-19 20:19:40

+0

我在其他人的代碼中工作,他們有一個自定義子,然後調用「ColumnNameAList.DataBind()」。我將手動插入代碼放在「ColumnNameAList.DataBind()」行之後的同一個子文件中。我認爲,因爲我在數據綁定後修改了列表視圖,這些更改將保留。 – Ariesto 2011-12-19 20:33:15

+0

上面提到的自定義子部分駐留在Page_PreRender區域中。 – Ariesto 2011-12-20 16:25:06

回答

1

最後我只能可靠地解決這個代碼隱藏解決方案。 我製作了原始數據源的副本,修改了我的副本,然後對其進行了數據綁定。

Dim MyOriginalTableSource As Data.DataView = DataManager.example() 
Dim ModifiedTable As DataTable = MyOriginalTableSource.ToTable 
'do stuff here 
Mylistbox.DataSource = ModifiedTable 
Mylistbox.DataBind() 

不適用於所有人,但在這種情況下,它對我來說工作正常。

0

有可能是一對夫婦與你接近這個,包括ListView控件已經是數據綁定和你都添加和插入的newitem的方式問題。

當我們有這樣一個場景,我們採取以下兩種方法之一:

1)添加新項目到數據源之前,在源是數據的約束。

2)刪除數據綁定並手動創建每個列表視圖項目,然後在循環的開始或結束處添加新項目。

+0

看起來像我將不得不遵循方法#2並手動添加它們,因爲我試圖插入項目並更改列表順序。如果手動創建列表視圖中的項目列表,您是否有任何簡明的如何做回發的例子? – Ariesto 2011-12-20 16:30:26

0

另一種方法可以將它注入到sql中。

select col1, col2, col3 from table1 union select '1','2','3' 

這將確保該項目總是添加,並且asp.net不需要知道或關心。

在綁定查詢之前,您可以將其添加到sql查詢中或從後面的代碼中添加它。如果你沒有綁定sql,你也可以這樣做LINQ的任何列表項目

相關問題