(学)新版动态表单研发,阶段成果----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的数据绑定问题。

 

转载于:https://www.cnblogs.com/spymaster/archive/2011/05/17/2048929.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值