Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/01/2010, 02:12
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Respuesta: Trabajando con datos... metodología correcta ??

Mmm, la verdad PeterPay, la primera pregunta, no tengo ni idea. Y la segunda... no sé ni para que narices se usa eso...

Tengo esto:

XAML
Código:
        <Button x:Name="btnCargar" Content="Cargar Datos" Click="Button_Click" Margin="27,8,0,0" Height="24" VerticalAlignment="Top" HorizontalAlignment="Left" Width="116" />
        <data:DataGrid x:Name="ctrlGridClientes" Margin="27,36,23,0" AutoGenerateColumns="False" LoadingRow="ctrlGridClientes_LoadingRow" SelectionChanged="ctrlGridClientes_SelectionChanged" Height="202" VerticalAlignment="Top">
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Header="Codigo Cliente" Binding="{Binding CodigoCliente}"/>
                <data:DataGridTextColumn Header="Nombre Cliente" Binding="{Binding NombreCliente}"/>
                <data:DataGridTemplateColumn Header="Provincia">
                    <data:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <ComboBox x:Name="cmbProvincias">
                                    <ComboBox.ItemTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal">
                                                <TextBlock x:Name="txtProvincia" Text="{Binding NombreProvincia}" />
                                            </StackPanel>
                                        </DataTemplate>
                                    </ComboBox.ItemTemplate>
                                </ComboBox>
                            </StackPanel>
                        </DataTemplate>
                    </data:DataGridTemplateColumn.CellTemplate>
                </data:DataGridTemplateColumn>
                <data:DataGridTemplateColumn Header="Eliminar">
                    <data:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox x:Name="chkEliminar" IsChecked="False" />
                        </DataTemplate>
                    </data:DataGridTemplateColumn.CellTemplate>
                </data:DataGridTemplateColumn>
            </data:DataGrid.Columns>
        </data:DataGrid>

CODE-BEHIND (Pongo lo relevante, que son los Eventos que se ejecutaran cuando se reciba la respuesta de la llamada asincrona al WCF Service)
Código:
        private void objCliente_GetClientesCompleted(object sender, GetClientesCompletedEventArgs e)
        {

            ctrlGridClientes.ItemsSource = e.Result;

            pbCargando.Visibility = Visibility.Collapsed;
        }

        private void _objCliente_SaveClientesCompleted(object sender, SaveClientesCompletedEventArgs e)
        {

            try
            {

                if (e.Result)
                    MessageBox.Show("Datos guardados correctamente", "Correcto", MessageBoxButton.OK);
                else
                    MessageBox.Show("Ha sucedido un error guardando los datos", "Error", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {

                MessageBox.Show("Error inesperado: " + ex.Message, "Error", MessageBoxButton.OK);
            }
        }

Bueno... ahi no te puse el botón guardar. La idea en principio era la siguiente (Que creo esta mal planteada).
1-. Pulsar el botón de cargar datos.
2-. Editas lo que queires en el DataGrid.

2.1-. Pulsas al botón Cancelar, el cual llamará al de Cargar Datos otra vez, y se volverán a cargar los datos iniciales.
2.2-. Pulsas el botón Guardar, donde entonces se envia la ObservableCollection asociada al WCF Service para que vaya actualizando.

El problema está, en que si pongo un botón eliminar en cada fila del DataGrid, este elemento se elimina de la ObservableCollection, pero al mandar esta al WCF Service, como ya no está ese elemento, no sé como "adivinar" que tengo que eliminarlo...

Creo que lo tenía mal planteado, no obstante, si me puedes dar un poco de luz en como trabajar con una buena metodologia n-tier en Silverlight, te lo agradecería amigo.

Mi idea inicial es la siguiente:
- Un proyecto de Entidades. (Que solo tiene clases y enumeraciones)
- Un proyecto de Negocio.
- Un proyecto con el acceso a datos.
- Un proyecto Silverlight con toda la UI.
- Un proyecto Web, con los WCF Services y con la página .aspx que contendrá el elemento Silverilght.

Agradecería me comentaras como ves todo este tema... Saludos.
__________________
Charlie.