• (学)新版动态表单研发,阶段成果3


    汇报一下今天的工作:

    1、解决控件数据绑定问题;

    2、解决窗体中数据来源问题;

    3、解决控件目标数据源与窗体数据集交互问题。(怎么越写越像学校的论文呢、乱糟糟)

    4、说说组件之间数据源共享的方法吧:

        窗体、及各组件采用继承方式,加增自己想要的DataSource属性,属性内容根据需求自己来写,我这目前是一个结构   

     public struct Entity
        {
            public string Name { get; set; }
            public string SelectCommand { get; set; }
            public string Type { get; set; }
            public string PrimaryKey { get; set; }
            public string ParentKey { get; set; }
            public DataSet DataSource { get; set; }
        }

       

        下面是使用方法了,绑定到控件属性上,就会得到你要的效果了。PS:我这份代码有点误人子弟,因为有个

                    ProManager pm = (ProManager)context.Instance;
                    IDesignerHost host 
    = pm.Host;

         其实是可以通过其它方式来

                    比如:

                    IDesignerHost host = (IDesignerHost)component.Site.GetService(typeof(IDesignerHost));

          来实现的,但因为我中间导了一手,做了些其它的事,所以这个component已经不是你所看到的component了,不得已采用上述方式实现。

    public class EditorEntity : UITypeEditor
        {
            
    public override UITypeEditorEditStyle GetEditStyle(
               ITypeDescriptorContext context)
            {
                
    return UITypeEditorEditStyle.Modal;
            }

            
    public override object EditValue(ITypeDescriptorContext context,
                IServiceProvider provider, 
    object value)
            {
                FormDataSource form 
    = new FormDataSource();
                
    if (value!=null)
                    form.DataSource 
    = (Dictionary<string,Entity>)value;
                
    else
                    form.DataSource 
    = new Dictionary<string,Entity>();
                form.ShowDialog();
                value 
    = form.DataSource;
                
    return value;
            }
        }
        
    public class EditorDataBinding : UITypeEditor
        {
            
    public override UITypeEditorEditStyle GetEditStyle(
               ITypeDescriptorContext context)
            {
                
    return UITypeEditorEditStyle.DropDown;
            }

            
    public override object EditValue(ITypeDescriptorContext context,
                IServiceProvider provider, 
    object value)
            {
                IWindowsFormsEditorService wfes 
    = provider.GetService(
                    
    typeof(IWindowsFormsEditorService)) as
                    IWindowsFormsEditorService;
                
    if (wfes != null)
                {

                    ProManager pm 
    = (ProManager)context.Instance;
                    IDesignerHost host 
    = pm.Host;
                    Dictionary
    <string,Entity> ls = (host.RootComponent as FormEx).DataSource;

                    FormDataBinding _formDataSet 
    = new FormDataBinding(ls, value==null ?"":value.ToString());
                    _formDataSet._wfes 
    = wfes;
                    wfes.DropDownControl(_formDataSet);
                    value 
    = _formDataSet.DataMember;
                }
                
    return value;
            }
        }

          

    4、上个图

    本来想先开始控件布局属性的存储、加载来着,但总感觉顺手把DataGrid、TreeView的数据绑定做完效果会更好,所以我决定。

    后续工作:

    1、这一、两天完成DataGrid、TreeView的数据绑定问题。

  • 相关阅读:
    MySQL配置文件
    Linux安装MySQL以及版本说明
    RabbitMQ之Routing(路由有选择的接收)
    RabbitMQ之Publish/Subscribe(发布/订阅)
    RabibitMQ之Work Queues
    RabbitMQ简单生产者消费者(一对一)发送消息
    Linux下安装RabbitMQ
    PyQt5+qtdesigner开发环境配置
    利用sql语句建立全国省市区三级数据库
    完整项目:网上图书商城(一、MySQL数据库设计)未完
  • 原文地址:https://www.cnblogs.com/spymaster/p/2048929.html
Copyright © 2020-2023  润新知