none
índice fuera de los límites de la matriz. c# RRS feed

  • Pregunta

  • Buen día, tengo un problema el cual planteo aca a ver si me pueden ayudar a solucionarlo.

    EL caso es que tengo una aplicación, es un desarrollo en WPF, EF y C#. En esta aplicación tengo una ventana de WPF en la cual puse dos combobox uno de clasificacion y otro de sub-clasificacion para llenar estos combos uso el siguiente codigo:

    1) uso una clase para cada contenedor

    public class combo_lin 
            {
                public string co_lin { get; set; }
                public string lin_des { get; set; }
            }


            public class combo_slin
            {
                public string co_subl { get; set; }
                public string subl_des { get; set; }
            }   

    2) Luego lo lleno con los datos

          

    public MainWindow()
            {
                InitializeComponent();


                var clin = (from x in cp.lin_art
                            select new combo_lin()
                            {co_lin = x.co_lin,lin_des = x.lin_des}).ToList();
                            cmb_lin.ItemsSource = clin;
            }

    3) Para llenar el segundo combobox lo hago desde el SelectionChanged del primero por que los datos del segundo combo dependerán de lo que se haya seleccionado en el primero. Seria asi:

                                                    

    private void cmb_lin_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {


                combo_lin cl = (combo_lin)e.AddedItems[0];
                cmb1 = cl.co_lin.ToString();
                cmb_slin.IsEnabled = true;


                //Asigna el valor del combo de Sub-Lineas


                var sline = from x in cp.sub_lin
                            where x.co_lin == cmb1
                            select new combo_slin { co_subl = x.co_subl, subl_des = x.subl_des };
                cmb_slin.ItemsSource = sline;
                cmb_slin.IsEnabled = true;
                cmb_slin.Text = sline.First().ToString();

            }

    4) Como uso dos campos para llenar los combobox lo que hago es decirle que cuando lo haya seleccionado mi valor sera el codigo de los registros es decir mi valor [0], el problema esta luego de que en el segundo combobox aplico lo siguiente para que asuma el valor:

    private void cmb_slin_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {            
                    combo_slin sline2 = (combo_slin)e.AddedItems[0];
                    cmb2 = sline2.co_subl.ToString();               
            }

    //Aqui es donde explota y me da el error cuando selecciono cualquier renglón del primer combobox perfecto me llena el segundo pero si lo quiero cambiar por cualquier otro entonces me da el error, asumo que se debe a que el ItemsSource del segundo luego de que cambio el primero no corresponde al registro que tiene seleccionado en ese momento pero no se que solución puedo darle, espero me haya sabido expresar aunque se que es largo el tema pero si requieren cualquier otra información se las puedo colocar acá, gracias de antemano. 



    C. Zapata

    martes, 13 de marzo de 2012 16:14