none
Como Asignar/Recoger valores y mostrar el texto en DatagridComboBoxColumn RRS feed

  • Pregunta

  • Hola, soy nuevo por aquí y con WPF también.

     

    Tengo problemas con  el uso del Datagrid  con DatagridComboboxColumn. Estoy usando un Datagrid tipo Microsoft.Windows.Controls.Datagrid:

      <WpfToolkit: DataGrid Name="dgDatos"
      ItemsSource="{Binding}"
      HorizontalScrollBarVisibility="Hidden" SelectionMode="Extended"
      CanUserAddRows="True" CanUserDeleteRows="True"
      CanUserResizeRows="True" CanUserSortColumns="True" AutoGenerateColumns="True" CanUserReorderColumns="False"
      RowHeaderWidth="17" RowHeight="25" Height="234" Margin="12,26,12,52" IsManipulationEnabled="True">
      </WpfToolkit: DataGrid>
    
    
    El datagrid me viene vacío, porqué le añado los datos dinámicamente (incluso las columnas). Esto lo hago de la siguiente manera (SendMailTareas va con Hibernate):
    dgDatos.ItemsSource = SendMailTareas.ObtenerSendMailTareas(gNHSession)

    Esto me carga la tabla de la base de datos. Entonces hay una columna que quiero que sea del tipo DatagridComboboxColumn. Para ello, en tiempo de ejecución creo una columna nueva del tipo combobox, una vez cargada la tabla. Le doy el nombre del Header, los valores que me deben aparecer cuando desplego el ComboBox y la añado el datagrid. Después volcaré los valores de la columna Inicial a la nueva columna con los Combos.

     Dim dgcmbRow As Microsoft.Windows.Controls.DataGridComboBoxColumn = New Microsoft.Windows.Controls.DataGridComboBoxColumn
     dgcmbRow.Header = "ListadoCmb"
     ' Añadir posibles valores del ComboBox
     dgcmbRow.ItemsSource = getListados()
     ' Añadir columna al datagrid
     dgDatos.Columns.Add(dgcmbRow)
    

    Getlistados() funciona de la siguiente manera:

     Private Listado As IList(Of String) = New List(Of String)() From {"CUMPLIMIENTO", "CUMPLIMIENTO:destino", _
         "RESUMEN", "MONIT", "MONIT:destino", _
         "MONERR", "MONERR"}
    
    
     Public Property getListados() As IList(Of String)
     Get
     Return Listado
     End Get
     Set(ByVal value As IList(Of String))
     Listado = value
     End Set
     End Property
    
    Pues ahora viene el problema. No encuentro la manera de hacer que los valores de la columna inicial se vuelquen a la columna Combobox. Así como tampoco consigo que cuando selecciono un valor del comobobox, este permanezca visible después de salir del modo edición del datagrid.
     ' Asignación de valores
     For i = 0 To iNumRows - 1
      'Valor Columna antigua
      sCellValue = dgDatos.Items(i).Listado
    
      'Asignar valor al combo box
    
      ?¿?¿?¿?¿?¿?¿?¿?¿?
    
     Next
    
    
    

    Muchas gracias por adelantado!

    Salud!

    PD: porque no salen colores en el código?




    jueves, 1 de septiembre de 2011 9:35