none
ComboBox en Datagrid

    Pregunta

  • Lo que necesito creo que es bastante basico para quien sepa... yo no se xD

    Tengo un datagrid, soy nuevo con esto de WPF y no me conozco muy bien con el datagrid...

     <DataGrid AutoGenerateColumns="False" Margin="12,357,12,97" Name="DataGrid1" ><br/>
          <DataGrid.Columns><br/>
            <DataGridTextColumn MinWidth="110" Header="Cuenta" /><br/>
            <DataGridTextColumn MinWidth="60" Header="CC" /><br/>
            <DataGridTextColumn MinWidth="60" Header="Análisis" /><br/>
            <DataGridTextColumn MinWidth="110" Header="Tercero" /><br/>
            <DataGridComboBoxColumn MinWidth="90" Header="Tipo" /><br/>
            <DataGridTextColumn MinWidth="110" Header="Valor" /><br/>
          </DataGrid.Columns><br/>
        </DataGrid>
    

    Como ven, tengo la columna "Tipo" que es una ComboBox, este codigo lo genero el visual studio, cuando le modifique la propiedad items al datagrid...

    Lo que quiero es que el combo tenga 2 items fijos (no enlazado a datos) preferiblemente establecidos como propiedades del combo, despues, supongo que puedo leer el dato igual que un combobox comun...

    miércoles, 14 de julio de 2010 19:22

Respuestas

  • agregando el x:name a la columna <DataGridComboBoxColumn x:Name="ComboCustom" lo podes enlazar como si fuera un combo normal 

    <DataGrid AutoGenerateColumns="False" Margin="12,357,12,97" Name="DataGrid1" >
    <DataGrid.Columns>
    <DataGridTextColumn MinWidth="110" Header="Cuenta" />
    <DataGridTextColumn MinWidth="60" Header="CC" />
    <DataGridTextColumn MinWidth="60" Header="Análisis" />
    <DataGridTextColumn MinWidth="110" Header="Tercero" />
    <DataGridComboBoxColumn x:Name="ComboCustom" MinWidth="90" Header="Tipo" />
    <DataGridTextColumn MinWidth="110" Header="Valor" />
    </DataGrid.Columns>
    </DataGrid>
    Dim CjtoDatos as new List(Of String) 
    CjtoDatos.Add("Si") 
    CjtoDatos.Add("No") 
    
    'Lo tratatas como si fuere un combo normal 
    ComboCustom.ItemsSource = CjtoDatos

     

     saludos

    • Marcado como respuesta Sergio Girado jueves, 15 de julio de 2010 19:26
    jueves, 15 de julio de 2010 18:17

Todas las respuestas

  • Hola Sergio.

    Directamente en el codigo donde defines la columna no puedes establecer los valores, por que no es un valor de cabecera de columna, si no que el comboBox se añade a los items con los valores que especifiques, asi que de una forma u otra se hace un enlace de los datos.

    Aunque no puedes hacerlo en la definicion de la columna, si que puedes crearte un recurso estatico y enlazarlo a la columna.

    En culquier caso, en la pagina de microsoft, explica como realizar el binding tanto a datos como a recursos estaticos:

    http://msdn.microsoft.com/es-es/library/system.windows.controls.datagridcomboboxcolumn.aspx

    si tienes algun problema en implementarlo comentalo.


    Saludos
    David González
    MCP.
    Visita mi Blog en: http://www.dgzornoza.com/
    jueves, 15 de julio de 2010 16:34
  • agregando el x:name a la columna <DataGridComboBoxColumn x:Name="ComboCustom" lo podes enlazar como si fuera un combo normal 

    <DataGrid AutoGenerateColumns="False" Margin="12,357,12,97" Name="DataGrid1" >
    <DataGrid.Columns>
    <DataGridTextColumn MinWidth="110" Header="Cuenta" />
    <DataGridTextColumn MinWidth="60" Header="CC" />
    <DataGridTextColumn MinWidth="60" Header="Análisis" />
    <DataGridTextColumn MinWidth="110" Header="Tercero" />
    <DataGridComboBoxColumn x:Name="ComboCustom" MinWidth="90" Header="Tipo" />
    <DataGridTextColumn MinWidth="110" Header="Valor" />
    </DataGrid.Columns>
    </DataGrid>
    Dim CjtoDatos as new List(Of String) 
    CjtoDatos.Add("Si") 
    CjtoDatos.Add("No") 
    
    'Lo tratatas como si fuere un combo normal 
    ComboCustom.ItemsSource = CjtoDatos

     

     saludos

    • Marcado como respuesta Sergio Girado jueves, 15 de julio de 2010 19:26
    jueves, 15 de julio de 2010 18:17
  • Eso es... exacto!!!
    jueves, 15 de julio de 2010 19:26