none
DataGrid绑定的问题 RRS feed

  • 问题

  • 在设置DataGrid中的一列为ComboBox样式后,想实现效果为:打开下拉列表后显示一组数据,用了2种方法绑定数据。

    1.用数组,MSDN中http://msdn.microsoft.com/zh-CN/library/ms748365.aspx有示例可以实现效果:

    Public Sub New()
    
     MyBase.Add(New PersonName("Willa", "Cather"))
    
     MyBase.Add(New PersonName("Isak", "Dinesen"))
    
     MyBase.Add(New PersonName("Victor", "Hugo"))
    
     MyBase.Add(New PersonName("Jules", "Verne"))
    
    End Sub
    
    


    但问题是:其数组值如何动态增减变换?下面是我用了个笨方法但还是行不通,请给意见。

    Dim 数组() As String = ({"Willa", "Isak", "Victor"})'这样可以灵活变换数值
    
     For i As Integer = 1 To 数组.Length - 1
    
      MyBase.Add(New PersonName(数组(i).ToString))
    
     Next
    
    

     2.用绑定,但点击选中下拉列表中的值离开单元格焦点后,其单元格的内容不显示其选择的内容却显示成了文字:System.Data.DataRowView请教问题出在那里?

    <DataGridTemplateColumn.CellEditingTemplate >
    
     <DataTemplate >
    
      <ComboBox SelectedItem="{Binding 字段1}" 
    
         DisplayMemberPath="字段2" 
    
         ItemsSource="{Binding Source={StaticResource DataSet1}, Path=表1}">
    
      </ComboBox>
    
     </DataTemplate>
    
    </DataGridTemplateColumn.CellEditingTemplate>
    
    
    • 已编辑 仁虎 2010年9月9日 14:07 修改
    2010年9月9日 14:05

全部回复

  • 方法2更好,你可以先删除其中的SelectedItem="{Binding 字段1}" 设置看看效果。因为你设置了DisplayMemberPath,因为最终显示的应该始终是对应选择项的字段2的值。


    Yiling Lai. MVP (Visual C++ and Client App Dev)
    2010年9月27日 12:32
  • 好像也就是设置ComboBox的ItemTemplate的问题吧。
    2010年10月4日 15:56