none
Enlazar ObservableCollection<T> con 2 entidades Relacionales RRS feed

  • Pregunta

  • Hola buenas noches, tengo una peque;a o mas bien gran duda. e estado buscando la manera de insertar los datos a 2 tablas que estan relacionales se llaman DatosFacturasEstablecers y DatosFacturas2Establecers

    donde la primera contiene estos datos:

    NoFactura:string, CodCliente: string, Fecha:DateTime, TipoFacturas:String, TipoMoneda: String, Total: Decimal.

    y la 2da tiene

    NoFactura:String, Cantidad:int32, Descripcion:String, Valor: Decimal, PrecioUnitario:decimal.

    Hasta el momento tengo esto agregado

     class DatosFacturasCollections : ObservableCollection<DatosFacturasEstablecers> //INotifyPropertyChanged
        {
            private BillBBDDEntities _context;
            public BillBBDDEntities Context { get { return _context; } }
            private ObservableCollection<DatosFacturas2Collections> _Collection2;
            public ObservableCollection<DatosFacturas2Collections> Collection2 { get { return _Collection2; } }
            public DatosFacturasCollections(IEnumerable<DatosFacturasEstablecers> factura, BillBBDDEntities context)
                : base(factura)
            {
                _context = context; 
            }
    
            protected override void InsertItem(int index, DatosFacturasEstablecers item)
            {
                this.Context.AddToDatosFacturasEstablecers(item);
                base.InsertItem(index, item);
            }
    
            protected override void RemoveItem(int index)
            {
                this.Context.DeleteObject(this[index]);
                base.RemoveItem(index);
            }
    
        }
    
    
        public class DatosFacturas2Collections : ObservableCollection<DatosFacturas2Establecer>
        {
            private BillBBDDEntities _context;
            public BillBBDDEntities Context { get { return _context; } }
            public DatosFacturas2Collections(IEnumerable<DatosFacturas2Establecer> factura, BillBBDDEntities context)
                : base(factura)
            {
                _context = context;
            }
    
            protected override void InsertItem(int index, DatosFacturas2Establecer item)
            {
    
                this.Context.AddToDatosFacturas2Establecer(item);
                base.InsertItem(index, item);
            }
    
            protected override void RemoveItem(int index)
            {
                this.Context.DeleteObject(this[index]);
                base.RemoveItem(index);
            }
    
        }

    no se si eso este bien al momento de usar el CollectionViewSource no se como unificar estas 2 clases para guardar los correspondientes datos. Yo use en la interfaz de Clientes esto asi parecido pero solo con una clase y luego me cree en xaml <CollectionViewSource x:Key="ClientesSource" /> y luego lo ubique en el grid asi

    <Grid Margin="4" DataContext="{Binding Source={StaticResource ClientesSource}}" Name="Layout">
    y luego pues solo hice el binding con los textbox. pero con esta nueva captura de facturas tengo combobox para los tipos de factura, moneda esto no hay problema pues solo hago binding en selectvalue, pero para los datos de DatosFacturas2Establecer van directo a un datagrid y es aca donde no se como crear una sola CollectionViewSource para manejar los datos que correspondiente :( alguna idea??? les agradeceria mucho o si conocen alguna manera mas optima para resolverlo, a por cierto es posible agregar un validationRule a estas sobre los controles???



    sábado, 17 de marzo de 2012 1:35

Respuestas

  • Hola Victor.

    El convertidor que usas parece que no hace nada, a simple vista conviertes la fecha en una cadena y luego la cadena en fecha con lo que nos quedamos igual.

    No se exactamente el error que te esta dando, pero si usas sql server y las columnas de las fechas son del tipo datetime has de tener en cuenta que la fecha no puede ser menor del 1 de enero de 1753 (un error muy comun, por eso es una buena practica usar cadenas para las fechas, para evitar problemas de tipos entre algunas ventajas).

    En sql server existe datetime y datetime2, puedes ver ambos tipos en los siguientes enlaces:

    Datetime: http://technet.microsoft.com/en-us/library/ms187819.aspx

    Datetime2: http://technet.microsoft.com/en-us/library/bb677335.aspx

    Posible solucion, quita el conversor y verifica las fechas.

    Por otra parte, el codigo es bastante curioso, me ha gustado tu forma de enlazar la vista de detalle, aunque esta un poco lioso el codigo.

    Bueno, solo comentar que ademas de usar varios grids, puedes hacer uso de un grid y dentro usar la plantilla de detalle para enlazar grids de detalle dentro de un grid maestro, de modo que al seleccionar una fila, se abrira el grid mostrando un grid de detalle dentro, te pongo un ejemplo sencillo con tu codigo:

            <!-- Datagrid maestro -->
            <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource salesOrderHeaderViewSource}}" Margin="12,0,0,0" Name="salesOrderHeaderDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" >
                <DataGrid.Columns>
                    <DataGridTextColumn x:Name="noFacturaColumn" Binding="{Binding Path=NoFactura}" Header="No Factura" Width="SizeToHeader" />
                    <DataGridComboBoxColumn x:Name="cbcodcliente" Header="CodClientes" ItemsSource="{Binding}" DisplayMemberPath="CodCliente" TextSearch.TextPath="CodCliente">
                    </DataGridComboBoxColumn>
                    <DataGridTemplateColumn x:Name="fechaColumn" Header="Fecha" Width="100">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <DatePicker SelectedDate="{Binding Path=Fecha, Converter={StaticResource con}, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridComboBoxColumn Header="tipofactura"  Width="100" ItemsSource="{Binding Source={StaticResource datatipofactura}}" DisplayMemberPath="TipoFacturas"/>
                    <DataGridComboBoxColumn Header="tipomoneda"  Width="100" ItemsSource="{Binding Source={StaticResource datatipomoneda}}" DisplayMemberPath="{Binding TipoMoneda}"/>
                    <DataGridComboBoxColumn Header="stados"  Width="100" ItemsSource="{Binding Source={StaticResource datatipostatus}}" DisplayMemberPath="{Binding Path=Anulado}"/>
                    <DataGridTextColumn x:Name="totalColumn" Binding="{Binding Path=Total}" Header="Total" Width="SizeToHeader" />
                </DataGrid.Columns>
    
                <!-- Datagrid detalle -->
                <DataGrid.RowDetailsTemplate>
                    <DataTemplate>                    
                        <Border Background="Gold">
                            <DataGrid AutoGenerateColumns="False" Margin="10,10" EnableRowVirtualization="True" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource salesOrderHeaderViewSource2}}" Name="salesOrderDetailDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top">
                                <DataGrid.Columns>
                                    <DataGridTextColumn x:Name="noFacturaColumn1" Binding="{Binding Path=NoFactura}" Header="No Factura" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="cantidadColumn" Binding="{Binding Path=Cantidad}" Header="Cantidad" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="descripcionColumn" Binding="{Binding Path=Descripcion}" Header="Descripcion" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="valorColumn" Binding="{Binding Path=Valor}" Header="Valor" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="pUnitarioColumn" Binding="{Binding Path=PUnitario}" Header="PUnitario" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="tarifaColumn" Binding="{Binding Path=Tarifa}" Header="Tarifa" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="tasaCambioColumn" Binding="{Binding Path=TasaCambio}" Header="Tasa Cambio" Width="SizeToHeader" />
                                </DataGrid.Columns>
                            </DataGrid>
                        </Border>
                    </DataTemplate>
                </DataGrid.RowDetailsTemplate>
            
            </DataGrid>

    Igual ya lo conocias el sistema y has preferido usar grids separados, pero puede servir de ayuda a otros.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/

    • Marcado como respuesta victor_23 jueves, 29 de marzo de 2012 7:24
    miércoles, 28 de marzo de 2012 20:11

Todas las respuestas

  • Hola victor_23 :)

    Estoy viendo que en tu codigo usas directamente la interfaz , pero no creo que ese sea el método correcto, 

    echa un vistazo aqui : Aqui espero que te sirva de ayuda! :)

    Tambien seria usando el bucle foreach para que te valide cada item. :)

    ATT: DavCker


    DavCkers- White Debugger, Assembler and Dissambler IP Trace Mexico-Guadalajara-Jalisco Tengo 16 años, Mi nombre es Davis http://www.wix.com/deivis3211/downloads-atom


    • Editado DavCker sábado, 17 de marzo de 2012 2:52
    sábado, 17 de marzo de 2012 2:51
  • Hola DavCker

    pues la verdad sigo aun sin poder jeje resolverlo, e intentando anexar una nueva clase derivada de la entidad y luego otra que deribe de observablecollection la clase anteriormente creada. pero al momento de guardar datos esto da error logicamente pues son de distintos objetos.. alguna idea o ojemplo de usar Master-Detail ??

    martes, 20 de marzo de 2012 6:51
  • Hola Victor_23.

    No entiendo muy bien lo que quieres hacer, parece un poco lioso lo que explicas, a mi entender parece que estas intentando guardar datos en 2 tablas relacionadas en la BBDD ¿Es correcto?.

    Si esto es correcto y parece que usas entityframework, no hay por que hacer nada de lo que estas haciendo, ya que si las tablas estan relacionadas mediante una clave foranea, el objeto de la tabla primaria debe contener un objeto de la tabla relacionada, de modo que solo tienes que crear el objeto primario y el primario.relacionado, luego guardar cambios en el contexto y ya esta.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/

    martes, 20 de marzo de 2012 10:36
  • Hola David.

    esto es lo que intento hacer es hacer una master detail de una entidad relacional con 3 mas. y hasta el momento tengo esto de codigo xaml

    <Window x:Class="MasterDetailBinding.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:costa="clr-namespace:MasterDetailBinding.convertidores" 
             xmlns:System="clr-namespace:System;assembly=mscorlib"
            xmlns:my="clr-namespace:MasterDetailBinding"  Title="MainWindow" Height="397" Width="673" mc:Ignorable="d"  Loaded="Window_Loaded" >
        <Window.Resources>
            <ObjectDataProvider x:Key="datatipofactura"
           MethodName="GetValues" ObjectType="{x:Type System:Enum}">
                <ObjectDataProvider.MethodParameters>
                    <x:Type TypeName="my:TipoFact"/>
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
            <ObjectDataProvider x:Key="datatipomoneda"
           MethodName="GetValues" ObjectType="{x:Type System:Enum}">
                <ObjectDataProvider.MethodParameters>
                    <x:Type TypeName="my:TipoMon"/>
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
            <ObjectDataProvider x:Key="datatipostatus"
           MethodName="GetValues" ObjectType="{x:Type System:Enum}">
                <ObjectDataProvider.MethodParameters>
                    <x:Type TypeName="my:TipoStatus"/>
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
    
            <costa:Converte x:Key="con" />
            <CollectionViewSource x:Key="datosFacturasEstablecersViewSource" d:DesignSource="{d:DesignInstance my:DatosFacturasEstablecers, CreateList=True}" />
            <CollectionViewSource x:Key="datosFacturasEstablecersDatosFacturas2EstablecerViewSource" Source="{Binding Path=DatosFacturas2Establecer, Source={StaticResource datosFacturasEstablecersViewSource}}" />
            
        </Window.Resources>
        <Grid DataContext="{StaticResource datosFacturasEstablecersViewSource}">
            <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" Height="127" HorizontalAlignment="Left" ItemsSource="{Binding}" Margin="24,0,0,0" Name="datosFacturasEstablecersDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="590">
                <DataGrid.Columns>
                    <DataGridTextColumn x:Name="noFacturaColumn" Binding="{Binding Path=NoFactura}" Header="No Factura" Width="SizeToHeader" />
                    <DataGridComboBoxColumn x:Name="cbcodcliente" Header="CodClientes" ItemsSource="{Binding}" DisplayMemberPath="CodCliente" TextSearch.TextPath="CodCliente">
                    </DataGridComboBoxColumn>
                     <DataGridTemplateColumn x:Name="fechaColumn" Header="Fecha" Width="100">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <DatePicker SelectedDate="{Binding Path=Fecha, Converter={StaticResource con}, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridComboBoxColumn Header="tipofactura"  Width="100" ItemsSource="{Binding Source={StaticResource datatipofactura}}" DisplayMemberPath="TipoFacturas"/>
                    <DataGridComboBoxColumn Header="tipomoneda"  Width="100" ItemsSource="{Binding Source={StaticResource datatipomoneda}}" DisplayMemberPath="{Binding TipoMoneda}"/>
                    <DataGridComboBoxColumn Header="stados"  Width="100" ItemsSource="{Binding Source={StaticResource datatipostatus}}" DisplayMemberPath="{Binding Path=Anulado}"/>
                    <DataGridTextColumn x:Name="totalColumn" Binding="{Binding Path=Total}" Header="Total" Width="SizeToHeader" />
                </DataGrid.Columns>
            </DataGrid>
            <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" Height="120" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource datosFacturasEstablecersDatosFacturas2EstablecerViewSource}}" Margin="24,133,0,0" Name="datosFacturas2EstablecerDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="442">
                <DataGrid.Columns>
                    <DataGridTextColumn x:Name="noFacturaColumn1" Binding="{Binding Path=NoFactura}" Header="No Factura" Width="SizeToHeader" />
                    <DataGridTextColumn x:Name="cantidadColumn" Binding="{Binding Path=Cantidad}" Header="Cantidad" Width="SizeToHeader" />
                    <DataGridTextColumn x:Name="descripcionColumn" Binding="{Binding Path=Descripcion}" Header="Descripcion" Width="SizeToHeader" />
                    <DataGridTextColumn x:Name="valorColumn" Binding="{Binding Path=Valor}" Header="Valor" Width="SizeToHeader" />
                    <DataGridTextColumn x:Name="pUnitarioColumn" Binding="{Binding Path=PUnitario}" Header="PUnitario" Width="SizeToHeader" />
                    <DataGridTextColumn x:Name="tarifaColumn" Binding="{Binding Path=Tarifa}" Header="Tarifa" Width="SizeToHeader" />
                    <DataGridTextColumn x:Name="tasaCambioColumn" Binding="{Binding Path=TasaCambio}" Header="Tasa Cambio" Width="SizeToHeader" />
                </DataGrid.Columns>
            </DataGrid>
            <Button Content="add" Height="32" HorizontalAlignment="Left" Margin="181,252,0,0" Name="button1" Click="button1_Click" VerticalAlignment="Top" Width="62" />
            <Button Content="save" Height="32" HorizontalAlignment="Left" Margin="181,290,0,0" Name="button2" Click="button1_Click" VerticalAlignment="Top" Width="62" />
        </Grid>
    </Window>
    
    y esto en codebehind
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using System.Data.Objects;
    namespace MasterDetailBinding
    {
        /// <summary>
        /// Lógica de interacción para MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
     MasterDetailBinding.BillBBDDEntities billBBDDEntities = new MasterDetailBinding.BillBBDDEntities();
            private BindingListCollectionView View;
            private BindingListCollectionView View2;
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                Button but = (Button)sender;
                switch (but.Content.ToString())
                {
                    case "add":
                        View.AddNew(); View.CommitNew();
                        break;
                    case "save":
                        billBBDDEntities.SaveChanges();
                        break;
                }
            }
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
               
                // Cargar datos en DatosFacturasEstablecers. Puede modificar este código según sea necesario.
                CollectionViewSource datosFacturasEstablecersViewSource = ((CollectionViewSource)(this.FindResource("datosFacturasEstablecersViewSource")));
                System.Data.Objects.ObjectQuery<MasterDetailBinding.DatosFacturasEstablecers> datosFacturasEstablecersQuery = this.GetDatosFacturasEstablecersQuery(billBBDDEntities);
                datosFacturasEstablecersViewSource.Source = datosFacturasEstablecersQuery.Execute(System.Data.Objects.MergeOption.AppendOnly);
                View = (BindingListCollectionView)datosFacturasEstablecersViewSource.View;
    
                var iList = billBBDDEntities.DatosClientesEstablecer as IListSource;
                var list = iList.GetList();
                var orderedList = list.Cast<DatosClientesEstablecer>().OrderBy(x => x.CodCliente, new CodeComparer());
                cbcodcliente.ItemsSource = orderedList;
            }
    
            private ObjectQuery<DatosFacturasEstablecers> GetDatosFacturasEstablecersQuery(BillBBDDEntities billBBDDEntities)
            {
                // Código generado automáticamente
    
                System.Data.Objects.ObjectQuery<MasterDetailBinding.DatosFacturasEstablecers> datosFacturasEstablecersQuery = billBBDDEntities.DatosFacturasEstablecers;
                datosFacturasEstablecersQuery = datosFacturasEstablecersQuery.Include("DatosFacturas2Establecer");
                // Devuelve un elemento ObjectQuery.
                return datosFacturasEstablecersQuery;
            }
        }
        public enum TipoFact {CREDITO,CONTADO };
        public enum TipoMon { CORDOBA, DOLAR };
        public enum TipoStatus { DEUDA, CANCELADA };
    
    }
    y esto otro que es para convertir pues segun el error que me a dado esque intenta convertir a tipo datetime y pues no permite insertar los datos
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Data;
    using System.Windows;
    namespace MasterDetailBinding.convertidores
    {
        public class Converte:IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                string strValue = System.Convert.ToString(value);
                DateTime resultDateTime;
                if (DateTime.TryParse(strValue, out resultDateTime))
                {
                    return resultDateTime;
                }
                return value;
            }
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                string strValue = DateTime.Parse(value.ToString()).ToShortDateString();
                DateTime resultDateTime;
                if (DateTime.TryParse(strValue, out resultDateTime))
                {
                    return resultDateTime;
                }
                return DependencyProperty.UnsetValue;
            }
        }
    }

    y aca estoy pues nuevamente trabajo pues el convertidor no me funciona

    martes, 27 de marzo de 2012 5:56
  • Hola Victor.

    El convertidor que usas parece que no hace nada, a simple vista conviertes la fecha en una cadena y luego la cadena en fecha con lo que nos quedamos igual.

    No se exactamente el error que te esta dando, pero si usas sql server y las columnas de las fechas son del tipo datetime has de tener en cuenta que la fecha no puede ser menor del 1 de enero de 1753 (un error muy comun, por eso es una buena practica usar cadenas para las fechas, para evitar problemas de tipos entre algunas ventajas).

    En sql server existe datetime y datetime2, puedes ver ambos tipos en los siguientes enlaces:

    Datetime: http://technet.microsoft.com/en-us/library/ms187819.aspx

    Datetime2: http://technet.microsoft.com/en-us/library/bb677335.aspx

    Posible solucion, quita el conversor y verifica las fechas.

    Por otra parte, el codigo es bastante curioso, me ha gustado tu forma de enlazar la vista de detalle, aunque esta un poco lioso el codigo.

    Bueno, solo comentar que ademas de usar varios grids, puedes hacer uso de un grid y dentro usar la plantilla de detalle para enlazar grids de detalle dentro de un grid maestro, de modo que al seleccionar una fila, se abrira el grid mostrando un grid de detalle dentro, te pongo un ejemplo sencillo con tu codigo:

            <!-- Datagrid maestro -->
            <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource salesOrderHeaderViewSource}}" Margin="12,0,0,0" Name="salesOrderHeaderDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" >
                <DataGrid.Columns>
                    <DataGridTextColumn x:Name="noFacturaColumn" Binding="{Binding Path=NoFactura}" Header="No Factura" Width="SizeToHeader" />
                    <DataGridComboBoxColumn x:Name="cbcodcliente" Header="CodClientes" ItemsSource="{Binding}" DisplayMemberPath="CodCliente" TextSearch.TextPath="CodCliente">
                    </DataGridComboBoxColumn>
                    <DataGridTemplateColumn x:Name="fechaColumn" Header="Fecha" Width="100">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <DatePicker SelectedDate="{Binding Path=Fecha, Converter={StaticResource con}, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridComboBoxColumn Header="tipofactura"  Width="100" ItemsSource="{Binding Source={StaticResource datatipofactura}}" DisplayMemberPath="TipoFacturas"/>
                    <DataGridComboBoxColumn Header="tipomoneda"  Width="100" ItemsSource="{Binding Source={StaticResource datatipomoneda}}" DisplayMemberPath="{Binding TipoMoneda}"/>
                    <DataGridComboBoxColumn Header="stados"  Width="100" ItemsSource="{Binding Source={StaticResource datatipostatus}}" DisplayMemberPath="{Binding Path=Anulado}"/>
                    <DataGridTextColumn x:Name="totalColumn" Binding="{Binding Path=Total}" Header="Total" Width="SizeToHeader" />
                </DataGrid.Columns>
    
                <!-- Datagrid detalle -->
                <DataGrid.RowDetailsTemplate>
                    <DataTemplate>                    
                        <Border Background="Gold">
                            <DataGrid AutoGenerateColumns="False" Margin="10,10" EnableRowVirtualization="True" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource salesOrderHeaderViewSource2}}" Name="salesOrderDetailDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top">
                                <DataGrid.Columns>
                                    <DataGridTextColumn x:Name="noFacturaColumn1" Binding="{Binding Path=NoFactura}" Header="No Factura" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="cantidadColumn" Binding="{Binding Path=Cantidad}" Header="Cantidad" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="descripcionColumn" Binding="{Binding Path=Descripcion}" Header="Descripcion" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="valorColumn" Binding="{Binding Path=Valor}" Header="Valor" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="pUnitarioColumn" Binding="{Binding Path=PUnitario}" Header="PUnitario" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="tarifaColumn" Binding="{Binding Path=Tarifa}" Header="Tarifa" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="tasaCambioColumn" Binding="{Binding Path=TasaCambio}" Header="Tasa Cambio" Width="SizeToHeader" />
                                </DataGrid.Columns>
                            </DataGrid>
                        </Border>
                    </DataTemplate>
                </DataGrid.RowDetailsTemplate>
            
            </DataGrid>

    Igual ya lo conocias el sistema y has preferido usar grids separados, pero puede servir de ayuda a otros.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/

    • Marcado como respuesta victor_23 jueves, 29 de marzo de 2012 7:24
    miércoles, 28 de marzo de 2012 20:11
  • Hola solo queria comentar que el error estaba en el formato de la fecha pues no tenia ninguna establecida asi que lo deje de esta forma

    <DataGridTemplateColumn x:Name="fechaColumn" Header="Fecha" Width="100"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <DatePicker SelectedDate="{Binding Path=Fecha, StringFormat={}{0: d MMMM yyyy}

    , Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>

    pero los datos como que no se me logran actualizar no hay notificacion asi que me buscare como realizarlo por clases parciales si lo logro terminar lo publico para que le sirva a alguien gracias por la ayuda
    domingo, 1 de abril de 2012 0:08