DetailsView对象绑定与Dictionary类型的属性

时间:2014-07-18 19:52:28

标签: asp.net

我正在尝试将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

它可以很好地绑定字符串属性。但它只是忽略了字典属性,就像它不存在一样。我找不到一个添加什么的例子来使这项工作。感谢。

2 个答案:

答案 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。我无法让它发挥作用。我做了一个自定义控件来做我想要的。