private static void ldc_MappingReload(object sender, EventArgs e)
        {
            LabeledDataControl       ldc = sender as LabeledDataControl;
            IBindingDataValueControl bc  = ldc.Control as IBindingDataValueControl;

            bc.ReloadData();
        }
Esempio n. 2
0
        private LabeledDataControl AddDataControl(IDesignerHost h, GridColumnInfo info)
        {
            //IDataControl dc = ControlFactory.GetDataControl(columnInfo);
            //Control control = dc as Control;
            //if (control == null)
            //{
            //    throw new ArgumentException("IDataControl should be System.Windows.Forms.Control!");
            //}
            //m_parentForm.Controls.Add(control);

            Control ic = null;

            foreach (string s in ControlsName.DataControlsTypeName)
            {
                if (s.LastIndexOf(info.DataControlType, StringComparison.OrdinalIgnoreCase) != -1)
                {
                    ic = (Control)h.CreateComponent(Feng.Utils.ReflectionHelper.GetTypeFromName(s));
                    break;
                }
            }

            if (ic == null)
            {
                throw new InvalidOperationException("Invalid ControlType of " + info.DataControlType);
            }
            LabeledDataControl control = (LabeledDataControl)h.CreateComponent(typeof(LabeledDataControl));

            MyLabel lbl = (MyLabel)h.CreateComponent(typeof(MyLabel));

            lbl.Text = info.Caption;

            control.Controls.Add(lbl);
            control.Controls.Add(ic);
            control.Label   = lbl;
            control.Control = ic;

            IDataControl dc = control as IDataControl;

            dc.Caption      = info.Caption;
            dc.PropertyName = info.PropertyName;
            dc.Navigator    = info.Navigator;
            //dc.Index = info.SeqNo;
            dc.Name = info.GridColumnName;

            control.ResetLayout();

            m_parentForm.Controls.Add(control);

            return(control);
        }
        private static void ldc_MappingEdited(object sender, EventArgs e)
        {
            LabeledDataControl ldc             = sender as LabeledDataControl;
            INameValueMappingBindingControl bc = ldc.Control as INameValueMappingBindingControl;

            if (!string.IsNullOrEmpty(bc.NameValueMappingName) &&
                !bc.NameValueMappingName.StartsWith("EnumType"))
            {
                NameValueMappingInfo info = ADInfoBll.Instance.GetNameValueMappingInfo(bc.NameValueMappingName);
                if (info != null && info.EditAction != null)
                {
                    ServiceProvider.GetService <IApplication>().ExecuteAction(info.EditAction.Name);
                }
                else
                {
                    ServiceProvider.GetService <IMessageBox>().ShowWarning("无对应编辑窗口,请在配置信息中配置!");
                }
            }
        }
        internal static void DisposeDataControls(IDataControl[] dataControlsBuffer)
        {
            if (dataControlsBuffer != null)
            {
                foreach (IDataControl dc in dataControlsBuffer)
                {
                    LabeledDataControl ldc = dc as LabeledDataControl;
                    if (ldc != null)
                    {
                        INameValueMappingBindingControl bc = ldc.Control as INameValueMappingBindingControl;
                        if (bc != null && !string.IsNullOrEmpty(bc.NameValueMappingName) &&
                            !bc.NameValueMappingName.StartsWith("EnumType"))
                        {
                            ldc.MappingEdited -= new EventHandler(ldc_MappingEdited);
                            ldc.MappingReload -= new EventHandler(ldc_MappingReload);
                        }
                    }
                }

                dataControlsBuffer = null;
            }
        }
        internal static void InternalCreateDataControls(IDisplayManager dm, IControlManager cm, string gridName, IArchiveDetailFormAuto parent, ToolTip toolTip)
        {
            // 创建数据控件
            IList <GridColumnInfo> infos = ADInfoBll.Instance.GetGridColumnInfos(gridName);

            if (infos != null)
            {
                Dictionary <string, IDataControl> nowControls = new Dictionary <string, IDataControl>();
                GetSubControls(nowControls, parent as Control);

                List <Control> addControls = new List <Control>();
                if (infos.Count > 0)
                {
                    foreach (GridColumnInfo info in infos)
                    {
                        IDataControl dc;
                        if (!nowControls.ContainsKey(info.GridColumnName))
                        {
                            if (string.IsNullOrEmpty(info.DataControlType))
                            {
                                continue;
                            }

                            // SetDataControls in GetDataControl();
                            dc = Feng.Windows.Utils.ControlFactory.GetDataControl(info, dm.Name);
                            if (dc != null)
                            {
                                addControls.Add(dc as Control);
                            }
                        }
                        else
                        {
                            dc           = nowControls[info.GridColumnName];
                            dc.Available = true;

                            Feng.Windows.Utils.ControlFactory.SetDataControls(dc as Control, info, dm.Name);
                        }

                        // not process Editable and Insertable in here, should be in DataManger.SetState()
                        //dc.SetState(m_cm.State);

                        dm.DataControls.Add(dc);
                        dc.AvailableChanged -= new EventHandler(dc_AvailableChanged);
                        dc.AvailableChanged += new EventHandler(dc_AvailableChanged);

                        LabeledDataControl ldc = dc as LabeledDataControl;
                        if (ldc != null)
                        {
                            if (toolTip != null)
                            {
                                toolTip.SetToolTip(ldc.Label, string.IsNullOrEmpty(info.Help) ? info.Caption : info.Help);
                            }

                            INameValueMappingBindingControl bc = ldc.Control as INameValueMappingBindingControl;
                            if (bc != null && !string.IsNullOrEmpty(bc.NameValueMappingName) &&
                                !bc.NameValueMappingName.StartsWith("EnumType"))
                            {
                                ldc.MappingEdited -= new EventHandler(ldc_MappingEdited);
                                ldc.MappingReload -= new EventHandler(ldc_MappingReload);
                                ldc.MappingEdited += new EventHandler(ldc_MappingEdited);
                                ldc.MappingReload += new EventHandler(ldc_MappingReload);
                            }
                        }
                    }

                    parent.AddControls(addControls.ToArray());
                }
                else
                {
                    // 没有GridColumnInfo
                    foreach (IDataControl dc in nowControls.Values)
                    {
                        dc.AvailableChanged -= new EventHandler(dc_AvailableChanged);
                        dc.AvailableChanged += new EventHandler(dc_AvailableChanged);

                        //AddControl(dc as Control);
                        dc.Available = true;
                        dm.DataControls.Add(dc);
                    }
                }
            }
        }
        /// <summary>
        /// Initialize
        /// </summary>
        /// <param name="component"></param>
        public override void Initialize(IComponent component)
        {
            base.Initialize(component);

            // Record instance of control we're designing
            LabeledDataControl container = component as LabeledDataControl;

            if (container == null)
            {
                throw new ArgumentException("component is not LabeledDataControl");
            }

            if (container != null)
            {
                m_owner = container;
                // Hook up events
                IComponentChangeService c = (IComponentChangeService)GetService(typeof(IComponentChangeService));
                c.ComponentRemoving += new ComponentEventHandler(OnComponentRemoving);
            }
        }