2014-07-18 112 views
0

我想要將一個detailsview綁定到一個對象。該對象包含一個Dictionary類型的屬性,我遇到了綁定到組合或列表框的問題。 我想仍然使用AutoGenerateRows,但也許有一個魔術屬性,我可以把屬性,使細節查看看到它應該繪製該屬性的組合框。DetailsView綁定屬性的類型字典

目的結合:

Public Class Test 
    Public Property MyTextboxProperty As String = "this works" 'binds fine 
    Public Property MyComboBoxProperty As New Dictionary(Of String, String) From {{"mykey", "myvalue"}} 'it just ignores this like it wasn't there 
End Class 

ASP:

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="true" DefaultMode="Edit" DataKeyNames=""> 
    <Fields> 

    </Fields> 
    </asp:DetailsView> 

代碼背後:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     DetailsView1.DataSource = New List(Of Object) From {New Test} 
     DetailsView1.DataBind() 
    End Sub 

它結合的串屬性的罰款。但它只是忽略了字典屬性,就像它不在那裏一樣。我找不到要做這項工作的例子。謝謝。

回答

0

我結束了不使用DetailsView控件。我無法讓它工作。我做了我想要的自定義控件。

0

假設您只想在允許用戶編輯DetailsView時顯示下拉菜單,則此問題可能有您正在查找的內容ASP.Net - DropDownList used in EditItemTemplate in DetailsView

基本上,您將需要一個模板字段,您可以在其中爲普通視圖和編輯視圖定義狀態。普通視圖會顯示選定的值(下面的新屬性),編輯視圖會將Dictionary中的值列表綁定到下拉列表中。您也可以通過選擇您選擇的值屬性在下拉列表中選擇正確的值。

要做到這一點,你需要爲所選擇的值來創建一個新的屬性:

Public Class Test 
    Public Property MyTextboxProperty As String = "this works" 'binds fine 
    Public Property MyComboBoxSelectedProperty As String = "select me" 'this would be used to bind the normal view and select the value in the edit view 
    Public Property MyComboBoxProperty As New Dictionary(Of String, String) From {{"mykey", "myvalue"}} 'you can bind this to the datasource of the drop down 
End Class 
+0

幸運的是,在這種情況下,沒有正常的看法。但是,在這個問題中沒有模板,因爲我不知道在運行時屬性是什麼。現在我正在努力在後面的代碼中添加模板。我希望我可以哄騙反思,讓它在沒有構建detailview的字段的情況下正常工作。 – toddmo

相關問題