我正在尝试将detailsview绑定到一个对象。该对象包含一个Dictionary类型的属性,我遇到了绑定到组合或列表框的问题。 我正在尝试仍然使用AutoGenerateRows,但也许我可以在属性上添加一个魔术属性来制作详细信息视图,看它应该为该属性绘制一个组合框。
要绑定的对象:
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 :(得分:0)
假设您只想在允许用户编辑DetailsView时显示下拉菜单,此问题可能包含您要查找的内容ASP.Net - DropDownList used in EditItemTemplate in DetailsView。
基本上,您需要一个模板字段,您可以在其中定义普通视图和编辑视图的状态。普通视图将显示所选值(下面的新属性),编辑视图将使字典中的值列表绑定到下拉列表。您也可以通过选择所选的值属性在下拉列表中选择正确的值。
要执行此操作,您需要为所选值创建一个新属性:
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
答案 1 :(得分:0)
我最终没有使用DetailsView。我无法让它发挥作用。我做了一个自定义控件来做我想要的。