none
Ayuda No me funciona de ninguna manera RRS feed

  • Pregunta

  • El problema es el mismo de las otras 2 entradas no entiendo si me podrian ayudar ya hice lo que me aconsejaron y parecia arreglado pero el problema persiste no se como resolver el problema es una tabla pequeña pero como se llama a cada rato me consume recursos y se atonta el programa he llegado a esa conclusión todo me funciona pero es como si se llenara la memoria y se cuelga el programa es silverlight 4 ya agrande el tamaño pero persiste el problema asi q mi pregunta es si hay alguna manera de borrar de memoria la tabla les pongo mi codigo para que me digan que puede ser.

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Windows.Navigation;
    using ControldeVisitas.ServicioFrisonex;

    namespace ControldeVisitas.Views.XVisita
    {
        public partial class PageVisita : Page
        {
            public PageVisita()
            {
                InitializeComponent();
            }
            public int idz;
            public int idC;
            public int idx;
            public string idV;
            // Se ejecuta cuando el usuario navega a esta página.
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {

            }
            public ServicioFrisonex.ServicioFrisonexClient webService = new ServicioFrisonex.ServicioFrisonexClient();
            private void Page_Loaded(object sender, RoutedEventArgs e)
            {

                button4.IsEnabled = false;
                button5.IsEnabled = false;
               
            }
            void BuscarIDX()
            {
                webService.getid_visitaCompleted += new
                    EventHandler<getid_visitaCompletedEventArgs>(webService_Getid_visitaCompleted);
                webService.getid_visitaAsync();
            }
            void webService_GetCiudadCompleted(object sender, GetCiudadCompletedEventArgs e)
            {
               

            }
            void webService_Getid_visitaCompleted(object sender, getid_visitaCompletedEventArgs  e)
            {
                int numerovisita = e.Result + 1;
                textBox1.Text = numerovisita.ToString();
            }

           

            
            private void button2_Click(object sender, RoutedEventArgs e)
            {
               
                BuscarCliente a = new BuscarCliente();

                a.Closed += new EventHandler(pasando_datos);
                a.Show();
            }
            private void pasando_datos(object sender, EventArgs e)
            {
               
               
                BuscarCliente dlg = (BuscarCliente)sender;

                bool? result = dlg.DialogResult;
                if (result == true)
                {
                    textBox2.Text = dlg.TextoCargado;
                    textBox4.Text = dlg.TextoCargado1;
                    textBox5.Text = dlg.TextoCargado2;
                    textBox6.Text = dlg.TextoCargado4;
                    textBox7.Text = dlg.TextoCargado5;
                    textBox8.Text = dlg.TextoCargado7;
                    textBox9.Text = dlg.TextoCargado3;
                    idV = dlg.TextoCargado6;
                }
            }

            private void button1_Click(object sender, RoutedEventArgs e)
            {
                BuscarVisita  a = new BuscarVisita();

                a.Closed += new EventHandler(pasando_datos1);
                a.Show();
            }
            private void pasando_datos1(object sender, EventArgs e)
            {
                BuscarVisita dlg = (BuscarVisita)sender;
               
                bool? result = dlg.DialogResult;
                if (result == true)
                {
                    textBox1.Text = dlg.TextoCargado6;
                    textBox2.Text = dlg.TextoCargado10;
                    textBox4.Text = dlg.TextoCargado3;
                    textBox5.Text = dlg.TextoCargado4;
                    textBox3.Text = dlg.TextoCargado5;
                    textBox6.Text = dlg.TextoCargado6 ;
                    textBox7.Text = dlg.TextoCargado9;
                    textBox8.Text = dlg.TextoCargado2;
                    textBox9.Text = dlg.TextoCargado;
                    datePicker1.Text = dlg.TextoCargado7;
           timePicker1.Value  =Convert.ToDateTime(dlg.TextoCargado8);
                    validarchecks(textBox1.Text);
                    idV = dlg.TextoCargado11;
                    button3.IsEnabled = false;
                    button4.IsEnabled = true;
                    button5.IsEnabled = true;
                }
                else
                {
                    button3.IsEnabled = true;
                    button4.IsEnabled = false;
                    button5.IsEnabled = false;
                }   
               
            }
          
            private void validarchecks(string id)
            {
                webService.BuscarDetalleCompleted +=new EventHandler<BuscarDetalleCompletedEventArgs>(webService_BuscarDetalleCompleted);
                webService.BuscarDetalleAsync(Convert.ToInt32(id));
            }
            void webService_BuscarDetalleCompleted(object sender, BuscarDetalleCompletedEventArgs e)
            {
                foreach (Detalle x in e.Result)
                {
                    if (x.tipoVisita == "entrega")
                    {
                        checkBox1.IsChecked = true;
                    }
                    if (x.tipoVisita == "toma pedido")
                    {
                        checkBox2.IsChecked = true;
                      
                    }
                    if (x.tipoVisita == "cobro")
                    {
                        checkBox3.IsChecked = true;
                    }
                    if (x.tipoVisita == "promocion")
                    {
                        checkBox4.IsChecked = true;
                    }
                    if (x.tipoVisita == "cotizacion")
                    {
                        checkBox5.IsChecked = true;
                    }
                    if (x.tipoVisita == "inventario")
                    {
                        checkBox6.IsChecked = true;
                    }
                    if (x.tipoVisita == "cerrado")
                    {
                        checkBox7.IsChecked = true;
                    }
                    if (x.tipoVisita == "noesta")
                    {
                        checkBox8.IsChecked = true;
                    }
                    if (x.tipoVisita == "otros")
                    {
                        checkBox9.IsChecked = true;
                    }
                }
            }
            private void button3_Click(object sender, RoutedEventArgs e)
            {
              
               int x= Convert.ToInt32(this.textBox1.Text);
               int y= Convert.ToInt32(this.textBox2.Text);
               int m = Convert.ToInt32(idV);
               DateTime date = (DateTime)datePicker1.SelectedDate;
               webService.insertarVisitaCompleted+=new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(webService_insertarVisitaCompleted);
                webService.insertarVisitaAsync(x,date,timePicker1.GetSelectedValue().ToString().Substring(11), textBox3.Text,y,m,textBox10.Text );
              
              
               //webService.insertarDetalleAsync(x, entrega, cobro, tomapedido, promocion, cotizacion, inventario, cerrado, noesta, otros);
              
            }
            void webService_insertarVisitaCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
            {
            insertardetallex();
            }
             void insertardetallex()
             {
                 int x= Convert.ToInt32(this.textBox1.Text);
                 string entrega, tomapedido, cobro, promocion, cotizacion, inventario, cerrado, noesta, otros;
                 if (this.checkBox1.IsChecked == true)
                 {
                     entrega = "entrega";
                   
                 }
                 else
                 {
                     entrega = " ";
                 }
                 if (this.checkBox2.IsChecked == true)
                 {
                     tomapedido = "toma pedido";
                 }
                 else
                 {
                     tomapedido = " ";
                 }
                 if (this.checkBox3.IsChecked == true)
                 {
                     cobro = "cobro";
                 }
                 else
                 {
                     cobro = " ";
                 }
                 if (this.checkBox4.IsChecked == true)
                 {
                     promocion = "promocion";
                 }
                 else
                 {
                     promocion = " ";
                 }
                 if (this.checkBox5.IsChecked == true)
                 {
                     cotizacion = "cotizacion";
                 }
                 else
                 {
                     cotizacion = " ";
                 }
                 if (this.checkBox6.IsChecked == true)
                 {
                     inventario = "inventario";
                 }
                 else
                 {
                     inventario = " ";
                 }
                 if (this.checkBox7.IsChecked == true)
                 {
                     cerrado = "cerrado";
                 }
                 else
                 {
                     cerrado = " ";
                 }
                 if (this.checkBox8.IsChecked == true)
                 {
                     noesta = "noesta";
                 }
                 else
                 {
                     noesta = " ";
                 }
                 if (this.checkBox9.IsChecked == true)
                 {
                     otros = "otros";
                 }
                 else
                 {
                     otros = " ";
                 }
                 webService.insertarDetalleCompleted+=new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(webService_insertarDetalleCompleted);
                 webService.insertarDetalleAsync(x, entrega, cobro, tomapedido, promocion, cotizacion, inventario, cerrado, noesta, otros);
                
             }
             void webService_insertarDetalleCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
             {
                 BuscarIDX();
                 Setear();
             }
             void Setear()
             {
                 textBox2.Text = " ";
                 textBox3.Text = " ";
                 textBox4.Text = " ";
                 textBox5.Text = " ";
                 textBox6.Text = " ";
                 textBox7.Text = " ";
                 textBox8.Text = " ";
                 textBox9.Text = " ";
                 //datePicker1.SelectedDate =  DateTime.Today;
                 //timePicker1.Value = DateTime.Now;
                 checkBox1.IsChecked = false;
                 checkBox2.IsChecked = false;
                 checkBox3.IsChecked = false;
                 checkBox4.IsChecked = false;
                 checkBox5.IsChecked = false;
                 checkBox6.IsChecked = false;
                 checkBox7.IsChecked = false;
                 checkBox8.IsChecked = false;
                 checkBox9.IsChecked = false;
                 checkBox10.IsChecked = false;
                 button4.IsEnabled = false;
                 button5.IsEnabled = false;
                 button3.IsEnabled = true;
             }
          
            
     
                // webService.getid_ciudadCompleted += new
                //EventHandler<getid_ciudadCompletedEventArgs>(webService_Getid_ciudadCompleted);
                // webService.getid_ciudadAsync(nombre_CiudadComboBox.);
            


             private void checkBox7_Checked(object sender, RoutedEventArgs e)
             {
                 textBox10.Text = "N";
                 checkBox1.IsEnabled = false;
                 checkBox2.IsEnabled = false;
                 checkBox3.IsEnabled = false;
                 checkBox4.IsEnabled = false;
                 checkBox5.IsEnabled = false;
                 checkBox6.IsEnabled = false;
                 checkBox8.IsEnabled = false;
                 checkBox9.IsEnabled = false;
                 checkBox10.IsEnabled = false;
                 checkBox1.IsChecked = false;
                 checkBox2.IsChecked = false;
                 checkBox3.IsChecked = false;
                 checkBox4.IsChecked = false;
                 checkBox5.IsChecked = false;
                 checkBox6.IsChecked = false;
                 checkBox8.IsChecked = false;
                 checkBox9.IsChecked = false;
                 checkBox10.IsChecked = false;
             }

             private void checkBox7_Unloaded(object sender, RoutedEventArgs e)
             {
                 checkBox1.IsEnabled = true;
                 checkBox2.IsEnabled = true;
                 checkBox3.IsEnabled = true;
                 checkBox4.IsEnabled = true;
                 checkBox5.IsEnabled = true;
                 checkBox6.IsEnabled = true;
                 checkBox8.IsEnabled = true;
                 checkBox9.IsEnabled = true;
             }

             private void checkBox7_Unchecked(object sender, RoutedEventArgs e)
             {
                 textBox10.Text = "S";
                 checkBox1.IsEnabled = true;
                 checkBox2.IsEnabled = true;
                 checkBox3.IsEnabled = true;
                 checkBox4.IsEnabled = true;
                 checkBox5.IsEnabled = true;
                 checkBox6.IsEnabled = true;
                 checkBox8.IsEnabled = true;
                 checkBox9.IsEnabled = true;
                 checkBox10.IsEnabled = true;
             }

             private void button4_Click(object sender, RoutedEventArgs e)
             {
              webService.eliminarDetalleAsync(textBox1.Text);
              webService.eliminarVisitaAsync(textBox1.Text);
              BuscarIDX();
              Setear();
             }

             private void button5_Click(object sender, RoutedEventArgs e)
             {
                 int x = Convert.ToInt32(this.textBox1.Text);
                 int y = Convert.ToInt32(this.textBox2.Text);
                 int m = Convert.ToInt32(idV);
                 DateTime date = (DateTime)datePicker1.SelectedDate;
                 webService.modificarVisitaCompleted+=new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(webService_modificarVisitaCompleted);
                 webService.modificarVisitaAsync(x, date, timePicker1.GetSelectedValue().ToString().Substring(11), textBox3.Text, y, m,textBox10.Text );
             }
             void webService_modificarVisitaCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
             {
                 webService.eliminarDetalleCompleted +=new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(webService_eliminarDetalleCompleted);
                 webService.eliminarDetalleAsync(textBox1.Text);
             }
             void webService_eliminarDetalleCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
             {
                 insertardetallex();
                 BuscarIDX();
                 Setear();
             }

             private void checkBox8_Checked(object sender, RoutedEventArgs e)
             {
                 textBox10.Text = "N";
                 checkBox1.IsEnabled = false;
                 checkBox2.IsEnabled = false;
                 checkBox3.IsEnabled = false;
                 checkBox4.IsEnabled = false;
                 checkBox5.IsEnabled = false;
                 checkBox6.IsEnabled = false;
                 checkBox7.IsEnabled = false;
                 checkBox9.IsEnabled = false;
                 checkBox10.IsEnabled = false;
                 checkBox1.IsChecked = false;
                 checkBox2.IsChecked = false;
                 checkBox3.IsChecked = false;
                 checkBox4.IsChecked = false;
                 checkBox5.IsChecked = false;
                 checkBox6.IsChecked = false;
                 checkBox7.IsChecked = false;
                 checkBox9.IsChecked = false;
                 checkBox10.IsChecked = false;
             }

             private void checkBox8_Unchecked(object sender, RoutedEventArgs e)
             {
                 textBox10.Text = "S";
                 checkBox1.IsEnabled = true;
                 checkBox2.IsEnabled = true;
                 checkBox3.IsEnabled = true;
                 checkBox4.IsEnabled = true;
                 checkBox5.IsEnabled = true;
                 checkBox6.IsEnabled = true;
                 checkBox7.IsEnabled = true;
                 checkBox9.IsEnabled = true;
                 checkBox10.IsEnabled = true;
             }

             private void checkBox10_Checked(object sender, RoutedEventArgs e)
             {
                 textBox10.Text = "L";
                 checkBox1.IsEnabled = false;
                 checkBox2.IsEnabled = false;
                 checkBox3.IsEnabled = false;
                 checkBox4.IsEnabled = false;
                 checkBox5.IsEnabled = false;
                 checkBox6.IsEnabled = false;
                 checkBox7.IsEnabled = false;
                 checkBox8.IsEnabled = false;
                 checkBox9.IsEnabled = false;
                 checkBox1.IsChecked = false;
                 checkBox2.IsChecked = false;
                 checkBox3.IsChecked = false;
                 checkBox4.IsChecked = false;
                 checkBox5.IsChecked = false;
                 checkBox6.IsChecked = false;
                 checkBox7.IsChecked = false;
                 checkBox9.IsChecked = false;
                 checkBox8.IsChecked = false;
             }

             private void checkBox10_Unchecked(object sender, RoutedEventArgs e)
             {
                 textBox10.Text = "S";
                 checkBox1.IsEnabled = true;
                 checkBox2.IsEnabled = true;
                 checkBox3.IsEnabled = true;
                 checkBox4.IsEnabled = true;
                 checkBox5.IsEnabled = true;
                 checkBox6.IsEnabled = true;
                 checkBox7.IsEnabled = true;
                 checkBox8.IsEnabled = true;
                 checkBox9.IsEnabled = true;
             }

             private void button6_Click(object sender, RoutedEventArgs e)
             {

                 BuscarClienteA a = new BuscarClienteA();

                 a.Closed += new EventHandler(pasando_datos);
                 a.Show();
             }
       

             private void button6_Click_2(object sender, RoutedEventArgs e)
             {
                 BuscarIDX();
             }
            
        }
    }

    jueves, 4 de agosto de 2011 16:06

Respuestas

  • Hola Israel.

    Creo hacerme una idea de por donde puede ir tu problema, pero antes que nada comentarte unas cosillas sobre el codigo (para que lo puedas optimizar y sin que te sepa mal).

    En si el codigo es infumable como decian en mi pueblo :), en un principio, deberias de intentar implementar el patron mvvm, aunque sea una forma basica del mismo, esto te quitaria mas del 50% del codigo y de problemas ya que estaria enlazado directamente al xaml.

    en la funcion callback 'webservice_buscarDetalleCompleted(..)' recorres el resultado y escribes un monton de ifs, pero ningun elseif, y tiene pinta de que solo puede existir uno, seria mucho mas rapido usar elseif, ya que no los comprobaria todos. Ademas aqui lo ideal seria implementar algun tipo de enumeracion y hacer uso de un switch.

    Luego hay fragmentos donde pones todos los checboxes para cambiar el estado, ya se que es un copia pega, pero deberia haber un bucle, seria mucho mas legible y un codigo mucho mas corto, ademas de poder reusarlo en una funcion, ya que creo que lo haces varias veces.

    Y ahora a tu problema.

    La varible 'webservice' la creas directamente en la propia variable, bueno, con el sistema de eventos mucha gente esta dejando de usar constructores y tienen un valor fundamental, sobretodo para la inicializacion de todas las variables a usar por la clase, tambien se puede usar el evento loaded en muchos casos, pero ¿por que no usar cada uno para lo que esta pensado?, el echo es que la variable la inicializas bien, pero no todos los eventos de la misma, y al fin y al cabo los eventos son punteros a funciones que se van añadiendo a una lista.

    Veo que siempre creas los eventos en algun boton, alguna funcion callback u otra funcion y cada vez que haces un 'handle += funcion', estas añadiendo un nuevo evento, por lo que seran llamadas varias veces, y estoseguira subiendo hasta que se haga un 'handle -= funcion'.

    Bien, si no quieres estar añadiendo y quitando el manejador del evento, puedes crear todos los que vayas a usar en el constructor y te puedes olvidar de crearlos y eliminarlos, ya que se crearan en el constructor y se eliminaran cuando sea recolectada la clase, al fin y al cabo los eventos siempre van a ser los mismos y los vas a usar durante el ciclo de vida de la clase.

    Y como recomendacion, inicializa todas las variables en el constructor o como mucho en el evento loaded, de esta forma estara toda la inicializacion junta para modificarla de forma rapida y sencilla, ademas de una mejor organizacion del codigo.

    Sobretodo rectifica el uso de los eventos y comentas como te va.

     


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

    jueves, 4 de agosto de 2011 16:41

Todas las respuestas

  • como pueden ver llamo a una childwindows donde realizo la busqueda de clientes

    aqui el codigo de la childwindows.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using ControldeVisitas.ServicioFrisonex;

    namespace ControldeVisitas.Views.XVisita
    {
        public partial class BuscarCliente : ChildWindow
        {
            public ServicioFrisonex.ServicioFrisonexClient webService = new ServicioFrisonex.ServicioFrisonexClient();
            public BuscarCliente()
            {
                InitializeComponent();
            }
            public int u = 0;
            public string q { get; set; }
            public string m { get; set; }
            public string w { get; set; }   
            public string exz { get; set; }
            public string r { get; set; }
            public string s { get; set; }
            public string t { get; set; }
            public int n { get; set; }
            public int z { get; set; }
            public int y { get; set; }
            public string TextoCargado { get; set; }
            public string TextoCargado1 { get; set; }
            public string TextoCargado2 { get; set; }
            public string TextoCargado3 { get; set; }
            public string TextoCargado4 { get; set; }
            public string TextoCargado5 { get; set; }
            public string TextoCargado6 { get; set; }
            public string TextoCargado7 { get; set; }

            private void OKButton_Click(object sender, RoutedEventArgs e)
            {

                if (this.textBlock1.Text == "")
                {
                    MessageBox.Show("Seleccione el resultado requerido ");
                }
                else
                {
                    try
                    {
                        this.TextoCargado = this.textBlock1.Text;
                        this.TextoCargado1 = this.textBlock2.Text;
                        this.TextoCargado2 = this.textBlock3.Text;
                        this.TextoCargado3 = this.textBlock4.Text;
                        this.TextoCargado4 = this.textBlock5.Text;
                        this.TextoCargado5 = this.textBlock6.Text;
                        this.TextoCargado6 = this.textBlock7.Text;
                        this.TextoCargado7 = this.textBlock8.Text;
                        this.DialogResult = true;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }

                }
               
            }

            private void CancelButton_Click(object sender, RoutedEventArgs e)
            {
                this.DialogResult = false;
            }

            private void button1_Click(object sender, RoutedEventArgs e)
            {
                if (textBox1.Text == " " || comboBox1.SelectedIndex.ToString() == "-1")
                {
                    MessageBox.Show("No se han ingresado datos");
                }
                else
                {
                  

                    //        lista = dataGrid1.ItemsSource.OfType<DClientes>().ToList();

                    //    if (comboBox1.SelectedIndex == 0)
                    //    {
                    //        foreach (DClientes m in lista)
                    //        {
                    //            if (m.ruc == textBox1.Text)
                    //                lista1.Add(m);
                    //        }
                    //        dataGrid2.ItemsSource = lista1;
                    //    }
                    //    else if (comboBox1.SelectedIndex == 1)
                    //    {
                    //        foreach (DClientes m in lista)
                    //        {

                    //            if (m.razsocial.ToUpper().Contains(textBox1.Text.ToUpper()))
                    //                lista1.Add(m);
                    //        }
                    //        dataGrid2.ItemsSource = lista1;
                    //    }
                    //    else if (comboBox1.SelectedIndex == 2)
                    //    {
                    //        foreach (DClientes m in lista)
                    //        {
                    //            if (m.nomcomercial.ToUpper().Contains(textBox1.Text.ToUpper()))
                    //                lista1.Add(m);
                    //        }
                    //        dataGrid2.ItemsSource = lista1;
                    //    }
                    //}
                    webService.GetBuscarClientesCompleted +=
                     new EventHandler<GetBuscarClientesCompletedEventArgs>(webService_GetBuscarCompleted);
                    webService.GetBuscarClientesAsync(comboBox1.SelectedIndex.ToString(), textBox1.Text,comboBox2.SelectedValue.ToString());
                }
            }
          
            void webService_GetBuscarCompleted(object sender, GetBuscarClientesCompletedEventArgs e)
            {
               
                if (e.Result == null)
                {
                   
                    MessageBox.Show("La Busqueda no ha encontrado datos");
                   
                }
                else
                {
                    try
                    {
                        dataGrid1.ItemsSource = e.Result;
                    }
                    catch (Exception ex)
                    {
                    MessageBox.Show(ex.ToString());
                    }
                }

            }

            private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
              
                    try
                    {
                        DClientes x = new DClientes();
                        x = (DClientes)this.dataGrid1.SelectedItem;
                        this.textBlock1.Text = x.idClient.ToString();
                        this.textBlock2.Text = x.nomcomercial.ToString();
                        this.textBlock3.Text = x.razsocial.ToString();
                        this.textBlock4.Text = x.nomciudad.ToString();
                        this.textBlock5.Text = x.nomzona.ToString();
                        this.textBlock6.Text = x.division1.ToString();
                        this.textBlock7.Text = x.idvisitadorx.ToString();
                        this.textBlock8.Text = x.visitadorx.ToString();
                        q = x.direccion.ToString();
                        w = x.telefono.ToString();
                        exz = x.mail.ToString();
                        r = x.contacto.ToString();
                        s = x.activo.ToString();
                        t = x.ruc.ToString();
                        m = x.visitadorx.ToString();
                        n = x.id_Ciudad;
                        z = x.idvisitadorx;
                        y = x.id_Zona;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
              
            }

            private void ChildWindow_Loaded(object sender, RoutedEventArgs e)
            {
                    
                webService.GetCiudadCompleted+=new EventHandler<GetCiudadCompletedEventArgs>(webService_GetCiudadCompleted);
                webService.GetCiudadAsync();

            }
             void webService_GetCiudadCompleted(object sender, GetCiudadCompletedEventArgs e)
            {
                comboBox2.ItemsSource = e.Result;
                comboBox2.DisplayMemberPath = "nombre_Ciudad";
                comboBox2.SelectedValuePath = "id_Ciudad";
            }
            void webService_ObtenerClientesCompleted(object sender, ObtenerClientesCompletedEventArgs e)
            {
                dataGrid1.ItemsSource = e.Result;
            }

            private void dataGrid2_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                if (dataGrid2.ItemsSource != null)
                {
                    try
                    {
                        DClientes x = new DClientes();
                        x = (DClientes)this.dataGrid2.SelectedItem;
                        this.textBlock1.Text = x.idClient.ToString();
                        this.textBlock2.Text = x.nomcomercial.ToString();
                        this.textBlock3.Text = x.razsocial.ToString();
                        this.textBlock4.Text = x.nomciudad.ToString();
                        this.textBlock5.Text = x.nomzona.ToString();
                        this.textBlock6.Text = x.division1.ToString();
                        this.textBlock7.Text = x.idvisitadorx.ToString();
                        this.textBlock8.Text = x.visitadorx.ToString();
                        q = x.direccion.ToString();
                        w = x.telefono.ToString();
                        exz = x.mail.ToString();
                        r = x.contacto.ToString();
                        s = x.activo.ToString();
                        t = x.ruc.ToString();
                        m = x.visitadorx.ToString();
                        n = x.id_Ciudad;
                        z = x.idvisitadorx;
                        y = x.id_Zona;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                }
                else
                {
                    MessageBox.Show("Error");
                }
            }

            private void ChildWindow_Unloaded(object sender, RoutedEventArgs e)
            {
                //
                //dataGrid2.ItemsSource = null;
            }

            private void ChildWindow_Closed(object sender, EventArgs e)
            {
                //dataGrid1.ItemsSource = null;
            }

            private void comboBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
              //  MessageBox.Show(comboBox2.SelectedValue.ToString());
            }

        }
    }

    Cualquier duda avisenme pero ayudenme el codigo creo q es bastante entendible y si alguien le sirve usenlo con confianza je je

     

    jueves, 4 de agosto de 2011 16:07
  • Hola Israel.

    Creo hacerme una idea de por donde puede ir tu problema, pero antes que nada comentarte unas cosillas sobre el codigo (para que lo puedas optimizar y sin que te sepa mal).

    En si el codigo es infumable como decian en mi pueblo :), en un principio, deberias de intentar implementar el patron mvvm, aunque sea una forma basica del mismo, esto te quitaria mas del 50% del codigo y de problemas ya que estaria enlazado directamente al xaml.

    en la funcion callback 'webservice_buscarDetalleCompleted(..)' recorres el resultado y escribes un monton de ifs, pero ningun elseif, y tiene pinta de que solo puede existir uno, seria mucho mas rapido usar elseif, ya que no los comprobaria todos. Ademas aqui lo ideal seria implementar algun tipo de enumeracion y hacer uso de un switch.

    Luego hay fragmentos donde pones todos los checboxes para cambiar el estado, ya se que es un copia pega, pero deberia haber un bucle, seria mucho mas legible y un codigo mucho mas corto, ademas de poder reusarlo en una funcion, ya que creo que lo haces varias veces.

    Y ahora a tu problema.

    La varible 'webservice' la creas directamente en la propia variable, bueno, con el sistema de eventos mucha gente esta dejando de usar constructores y tienen un valor fundamental, sobretodo para la inicializacion de todas las variables a usar por la clase, tambien se puede usar el evento loaded en muchos casos, pero ¿por que no usar cada uno para lo que esta pensado?, el echo es que la variable la inicializas bien, pero no todos los eventos de la misma, y al fin y al cabo los eventos son punteros a funciones que se van añadiendo a una lista.

    Veo que siempre creas los eventos en algun boton, alguna funcion callback u otra funcion y cada vez que haces un 'handle += funcion', estas añadiendo un nuevo evento, por lo que seran llamadas varias veces, y estoseguira subiendo hasta que se haga un 'handle -= funcion'.

    Bien, si no quieres estar añadiendo y quitando el manejador del evento, puedes crear todos los que vayas a usar en el constructor y te puedes olvidar de crearlos y eliminarlos, ya que se crearan en el constructor y se eliminaran cuando sea recolectada la clase, al fin y al cabo los eventos siempre van a ser los mismos y los vas a usar durante el ciclo de vida de la clase.

    Y como recomendacion, inicializa todas las variables en el constructor o como mucho en el evento loaded, de esta forma estara toda la inicializacion junta para modificarla de forma rapida y sencilla, ademas de una mejor organizacion del codigo.

    Sobretodo rectifica el uso de los eventos y comentas como te va.

     


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

    jueves, 4 de agosto de 2011 16:41
  • Hola Israel.

    Creo hacerme una idea de por donde puede ir tu problema, pero antes que nada comentarte unas cosillas sobre el codigo (para que lo puedas optimizar y sin que te sepa mal).

    En si el codigo es infumable como decian en mi pueblo :), en un principio, deberias de intentar implementar el patron mvvm, aunque sea una forma basica del mismo, esto te quitaria mas del 50% del codigo y de problemas ya que estaria enlazado directamente al xaml.

    en la funcion callback 'webservice_buscarDetalleCompleted(..)' recorres el resultado y escribes un monton de ifs, pero ningun elseif, y tiene pinta de que solo puede existir uno, seria mucho mas rapido usar elseif, ya que no los comprobaria todos. Ademas aqui lo ideal seria implementar algun tipo de enumeracion y hacer uso de un switch.

    Luego hay fragmentos donde pones todos los checboxes para cambiar el estado, ya se que es un copia pega, pero deberia haber un bucle, seria mucho mas legible y un codigo mucho mas corto, ademas de poder reusarlo en una funcion, ya que creo que lo haces varias veces.

    Y ahora a tu problema.

    La varible 'webservice' la creas directamente en la propia variable, bueno, con el sistema de eventos mucha gente esta dejando de usar constructores y tienen un valor fundamental, sobretodo para la inicializacion de todas las variables a usar por la clase, tambien se puede usar el evento loaded en muchos casos, pero ¿por que no usar cada uno para lo que esta pensado?, el echo es que la variable la inicializas bien, pero no todos los eventos de la misma, y al fin y al cabo los eventos son punteros a funciones que se van añadiendo a una lista.

    Veo que siempre creas los eventos en algun boton, alguna funcion callback u otra funcion y cada vez que haces un 'handle += funcion', estas añadiendo un nuevo evento, por lo que seran llamadas varias veces, y estoseguira subiendo hasta que se haga un 'handle -= funcion'.

    Bien, si no quieres estar añadiendo y quitando el manejador del evento, puedes crear todos los que vayas a usar en el constructor y te puedes olvidar de crearlos y eliminarlos, ya que se crearan en el constructor y se eliminaran cuando sea recolectada la clase, al fin y al cabo los eventos siempre van a ser los mismos y los vas a usar durante el ciclo de vida de la clase.

    Y como recomendacion, inicializa todas las variables en el constructor o como mucho en el evento loaded, de esta forma estara toda la inicializacion junta para modificarla de forma rapida y sencilla, ademas de una mejor organizacion del codigo.

    Sobretodo rectifica el uso de los eventos y comentas como te va.

     


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

    Tranquilo yo quiero aprender lo que pasa es q aca en mi tierra no hay cursos sobre esto y digamos que el codigo lo he sacado guiado por el internet(videotutoriales,tutoriales,foros) me encanta desarrollar y pues toda critica es bienvenida por que todavia soy verde al menos en xaml  c# me defiendo y mejor te agradezco por tu respuesta y por tus observaciones.

    Y bueno ahora regresando al tema crei q habia implementado un patron mvvm je je me podrias explicar bien el modelo mvvm xq segun lo que leí en esta pagina me base.

    http://maromasdigitales.net/2010/05/patron-mvvm-explicado/

    y bueno en la cuestión de los ifs la utilizo xq se puede seleccionar mas de un checkbox y eso le envio a mi servicio donde dependiendo de lo que envio me graba como detalle en otra tabla. es como decir una factura  1 cabecera y n detalles por eso tantos ifs .

    y con esto si no se que responderte

    Veo que siempre creas los eventos en algun boton, alguna funcion callback u otra funcion y cada vez que haces un 'handle += funcion', estas añadiendo un nuevo evento, por lo que seran llamadas varias veces, y estoseguira subiendo hasta que se haga un 'handle -= funcion'.

    Bien, si no quieres estar añadiendo y quitando el manejador del evento, puedes crear todos los que vayas a usar en el constructor y te puedes olvidar de crearlos y eliminarlos, ya que se crearan en el constructor y se eliminaran cuando sea recolectada la clase, al fin y al cabo los eventos siempre van a ser los mismos y los vas a usar durante el ciclo de vida de la clase.

     hay si me dejaste frio lo del handle- no me la sabia voy a investigar como implementarle  pero con todo si podrias explicarme con un ejemplo te lo agradeceria.

     


    • Marcado como respuesta Israel Rodas jueves, 4 de agosto de 2011 20:22
    • Desmarcado como respuesta Israel Rodas jueves, 4 de agosto de 2011 20:23
    jueves, 4 de agosto de 2011 18:15
  • Hola Israel.

    a ver si tengo un poco de tiempo y te implemento la clase inicial que has puesto de forma mas o menos optimizada para que le eches un vistazo y compares.

    Mientras, puedes echarle un vistazo a este articulo del blog del compañero Yeray que explica muy basica y sencillamente la base de MVVM, para que no te marees ni te agobies con largos articulos de arquitectura:

    http://geeks.ms/blogs/jyeray/archive/2010/10/25/compartiendo-c-243-digo-m-243-vil-web-escritorio.aspx

    y luego en su libro 3, tienes en el punto 5 una explicacion un poco mas detallada:

    https://skydrive.live.com/?cid=fd100135b82f3364&sc=documents&id=FD100135B82F3364%21375

    (bueno, yo lo leeria todo, ya que tambien explica el tema de las propiedades de dependencia para enlazar controles, en tu caso serian los textBoxes).


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    viernes, 5 de agosto de 2011 6:19
  • Hola Israel.

    a ver si tengo un poco de tiempo y te implemento la clase inicial que has puesto de forma mas o menos optimizada para que le eches un vistazo y compares.

    Mientras, puedes echarle un vistazo a este articulo del blog del compañero Yeray que explica muy basica y sencillamente la base de MVVM, para que no te marees ni te agobies con largos articulos de arquitectura:

    http://geeks.ms/blogs/jyeray/archive/2010/10/25/compartiendo-c-243-digo-m-243-vil-web-escritorio.aspx

    y luego en su libro 3, tienes en el punto 5 una explicacion un poco mas detallada:

    https://skydrive.live.com/?cid=fd100135b82f3364&sc=documents&id=FD100135B82F3364%21375

    (bueno, yo lo leeria todo, ya que tambien explica el tema de las propiedades de dependencia para enlazar controles, en tu caso serian los textBoxes).


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    Muchas Gracias me ayudado mucho gracias
    viernes, 5 de agosto de 2011 17:58