protected override void LoadChildsAction(Type type)
        {
            if (type == typeof(Submodulo_Instructor_Promocion))
            {
                Datos_Promociones.DataSource = _entity.Promociones;

                if (Datos_Promociones.Current != null && ((Instructor_Promocion)Datos_Promociones.Current).OidPromocion > 0)
                {
                    _modulos                 = ModuloList.GetListByPromocion(false, ((Instructor_Promocion)Datos_Promociones.Current).OidPromocion);
                    _combo_modulos           = new Library.Instruction.HComboBoxSourceList(ModuloList.SortList(_modulos, "NumeroOrden", ListSortDirection.Ascending));
                    Datos_Modulos.DataSource = _combo_modulos;

                    //_submodulos = SubmoduloList.GetList(false);
                    _combo_modulos.Childs       = new Library.Instruction.HComboBoxSourceList(SubmoduloList.SortList(_submodulos, "CodigoOrden", ListSortDirection.Ascending));
                    Datos_Submodulos.DataSource = _combo_modulos.Childs;

                    Instructor_Promocion promo = Datos_Promociones.Current as Instructor_Promocion;
                    Datos_Submodulo_Instructor_Promocion.DataSource = promo.Submodulos;
                    SetCellsDataSource(Submodulo_Instructor_Grid.Name);
                }
            }
            //if (type == typeof(Submodulo_Instructor))
            //{
            //    Datos_Submodulo_Instructor.DataSource = _entity.Submodulos;
            //    PgMng.Grow(string.Empty, "Datos_Submodulo_Instructor");
            //}
        }
        /// <summary>
        /// Implementa Save_button_Click
        /// </summary>
        protected override void SubmitAction()
        {
            if (((ComboBoxSource)Promocion_O_CB.SelectedItem).Oid == 0 ||
                ((ComboBoxSource)Promocion_D_CB.SelectedItem).Oid == 0)
            {
                MessageBox.Show("Debe seleccionar promociones de origen y destino válidas");
                return;
            }

            if (((ComboBoxSource)Promocion_O_CB.SelectedItem).Oid ==
                ((ComboBoxSource)Promocion_D_CB.SelectedItem).Oid)
            {
                MessageBox.Show("Debe seleccionar promociones de origen y destino diferentes");
                return;
            }

            Submodulos_Instructores_Promociones capacidad_origen = Entity.Promociones.GetByOidPromocion(((ComboBoxSource)Promocion_O_CB.SelectedItem).Oid).Submodulos;
            long oid_promocion = ((ComboBoxSource)Promocion_D_CB.SelectedItem).Oid;

            Instructor_Promocion promo = null;

            foreach (Instructor_Promocion item in Entity.Promociones)
            {
                if (item.OidPromocion == oid_promocion)
                {
                    promo = item;
                    break;
                }
            }

            if (promo == null)
            {
                promo = Instructor_Promocion.NewChild(Entity);
                promo.MarkItemNew();

                promo.OidPromocion = oid_promocion;
                Entity.Promociones.AddItem(promo);
            }

            foreach (Submodulo_Instructor_Promocion item in capacidad_origen)
            {
                Submodulo_Instructor_Promocion elem = Submodulo_Instructor_Promocion.NewChild(promo);
                elem.MarkItemNew();

                elem.OidPromocion  = oid_promocion;
                elem.OidSubmodulo  = item.OidSubmodulo;
                elem.OidModulo     = item.OidModulo;
                elem.OidInstructor = item.OidInstructor;
                elem.Prioridad     = item.Prioridad;

                if (!promo.Submodulos.IsDuplicated(elem))
                {
                    promo.Submodulos.Add(elem);
                }
            }

            _action_result = DialogResult.OK;
            Close();
        }
        /// <summary>
        /// Implementa Save_button_Click
        /// </summary>
        protected override void SubmitAction()
        {
            if (((ComboBoxSource)Modulo_CB.SelectedItem).Oid == 0 ||
                ((ComboBoxSource)Promocion_CB.SelectedItem).Oid == 0)
            {
                MessageBox.Show("Debe seleccionar un módulo y una promoción válidos");
                return;
            }
            ModuloInfo    modulo     = ModuloInfo.Get(((ComboBoxSource)Modulo_CB.SelectedItem).Oid, false);
            SubmoduloList submodulos = SubmoduloList.GetModuloList(modulo.Oid, false);

            long oid_promocion = ((ComboBoxSource)Promocion_CB.SelectedItem).Oid;

            Instructor_Promocion promo = null;

            foreach (Instructor_Promocion item in Entity.Promociones)
            {
                if (item.OidPromocion == oid_promocion)
                {
                    promo = item;
                    break;
                }
            }

            if (promo == null)
            {
                promo = Instructor_Promocion.NewChild(Entity);
                promo.MarkItemNew();

                promo.OidPromocion = oid_promocion;
                Entity.Promociones.AddItem(promo);
            }

            foreach (SubmoduloInfo item in submodulos)
            {
                Submodulo_Instructor_Promocion elem = Submodulo_Instructor_Promocion.NewChild(promo);
                elem.MarkItemNew();

                elem.OidPromocion  = oid_promocion;
                elem.OidSubmodulo  = item.Oid;
                elem.OidModulo     = item.OidModulo;
                elem.OidInstructor = Entity.Oid;
                elem.Prioridad     = (long)Prioridad_NUD.Value;

                if (!promo.Submodulos.IsDuplicated(elem))
                {
                    promo.Submodulos.AddItem(elem);
                }
            }

            _action_result = DialogResult.OK;
            Close();
        }
        private void Submodulo_Instructor_Grid_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (this is InstructorUIForm)
            {
                switch (Submodulo_Instructor_Grid.Columns[e.ColumnIndex].Name)
                {
                case ("Modulo_CBC"):
                {
                    if (Submodulo_Instructor_Grid["Modulo_CBC", e.RowIndex].Value != null)
                    {
                        if (Datos_Promociones.Current != null && ((Instructor_Promocion)Datos_Promociones.Current).OidPromocion > 0)
                        {
                            //se está modificando una línea ya existente
                            if (lista_sources.Count > e.RowIndex)
                            {
                                lista_sources[e.RowIndex] = _combo_modulos.GetFilteredChilds((long)Submodulo_Instructor_Grid["Modulo_CBC", e.RowIndex].Value);
                            }
                            else         //hay que añadir un nuevo datasource a la lista
                            {
                                lista_sources.Add(_combo_modulos.GetFilteredChilds((long)Submodulo_Instructor_Grid["Modulo_CBC", e.RowIndex].Value));
                            }
                            ((DataGridViewComboBoxCell)(Submodulo_Instructor_Grid["Submodulo_CBC", e.RowIndex])).DataSource         = lista_sources[e.RowIndex];
                            ((Submodulo_Instructor_Promocion)Submodulo_Instructor_Grid.Rows[e.RowIndex].DataBoundItem).OidPromocion = ((Instructor_Promocion)Datos_Promociones.Current).OidPromocion;
                        }
                    }
                }
                break;

                case ("Submodulo_CBC"):
                {
                    if (Datos_Promociones.Current == null)
                    {
                        return;
                    }

                    Instructor_Promocion selected = Entity.Promociones.GetItem(((Instructor_Promocion)Datos_Promociones.Current).Oid);

                    if (selected == null)
                    {
                        foreach (Instructor_Promocion item in Entity.Promociones)
                        {
                            if (item.Oid == ((Instructor_Promocion)Datos_Promociones.Current).Oid)
                            {
                                selected = item;
                                break;
                            }
                        }
                    }

                    Submodulos_Instructores_Promociones lista = selected.Submodulos;


                    if (lista.Count <= e.RowIndex)
                    {
                        lista.Add((Submodulo_Instructor_Promocion)Submodulo_Instructor_Grid.Rows[e.RowIndex].DataBoundItem);
                    }

                    lista[e.RowIndex].OidInstructorPromocion = ((Instructor_Promocion)Datos_Promociones.Current).Oid;
                    lista[e.RowIndex].OidInstructor          = Entity.Oid;
                }
                break;
                }
            }
        }