您的位置:首页 > 产品设计 > UI/UE

如何使用FormPanel的SetValues方法加载EntityFramework实体类数据到FormPanel上

2011-05-04 11:53 597 查看
前面提到,由于Coolite中使用的JSON转换方法在转换EF实体时出错,导致不能直接使用FormPanelBase的SetValues(object o)方法,我查阅了一下SetValues的源码,通过扩展方法的方式为FormPanel附加了一个SetEntityValues方法,这个SetEntityValues方法使用前文中的自定义转换JSON方法,详情见:http://blog.csdn.net/llxchen/archive/2011/05/04/6393547.aspx

扩展SetEntityValues方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ext.Net;
using System.Data.Objects.DataClasses;
using Utilities;

namespace WebUtility.ExtNet
{
    public static class ExtensionMethods
    {
        /// <summary>
        /// 将EntityObj对象序列化后的值设置到FormPanel上
        /// </summary>
        /// <param name="form"></param>
        /// <param name="obj"></param>
        public static void SetEntityValues(this FormPanelBase form, EntityObject obj)
        {
            ControlExtensionMethods.SetFormPanelValues(form, obj);
        }      
    }

    public class ControlExtensionMethods
    {
        /// <summary>
        /// 设置EntityObject对象值到FormPanel
        /// </summary>
        /// <param name="form"></param>
        /// <param name="obj"></param>
        public static void SetFormPanelValues(FormPanelBase form, EntityObject obj)
        {
            string template = "{0}.getForm().setValues({1});";
            string sb = obj.ToEntitiesJson();
            string script = string.Format(template, form.ClientID, sb);
            form.AddScript(script);
        }
    }
}




如何使用

var contract = ((ProjectContractBLL)BusinessManager).GetSingleProjectContract(Convert.ToInt32(ContractId));
                    //ProjectContractForm是Ext.net的FormPanel控件
                    ProjectContractForm.SetEntityValues(contract);


这样使用EF时,可以使用FormPanel的扩展方法SetEntityValues方法来达到原SetValues方法一样的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐