一、csm
csm是Ice.Lib.Customization.CustomScriptManager类的一个实例化对象,它是用来管理客制化的工具。
客制化中Epicor标准的控件,对象等都是从csm中获取的,常用代码如下:
//通过GUID获取控件:
EpiUltraGrid epiUG1=(EpiUltraGrid)csm.GetNativeControlReference(guid);
//获取工具栏管理控件
UltraToolbarsManager baseToolbarsManager = ((UltraToolbarsManager)(csm.GetGlobalInstance("baseToolbarsManager")));
//在PO Entry中获取oTrans对象
Erp.UI.App.POEntry.Transaction oTrans = ((Erp.UI.App.POEntry.Transaction)(csm.GetGlobalInstance("oTrans")));
//在PO Entry中获取POEntryForm对象
Erp.UI.App.POEntry.POEntryForm POEntryForm = ((Erp.UI.App.POEntry.POEntryForm)(csm.GetGlobalInstance("POEntryForm")));
//在PO Entry中获取POAdapter对象
EpiBaseAdapter oTrans_poAdapter = ((EpiBaseAdapter)(this.csm.TransAdaptersHT["oTrans_poAdapter"]));
二、oTrans
oTrans对象其实不需要我们写代码从csm中获取,因为客制中默认已经生成该代码,勾选All Code可以查看。
oTrans是UI层开发中使用最多的对象,UI层的大部分操作都可以通过调用oTrans对象的方法来实现,oTrans对象也有许多常用的属性。比较通用的方法和属性如:
//方法
oTrans.Refresh();//刷新,
oTrans.Update();//保存
oTrans.Delete();//删除
oTrans.Undo();//撤销
oTrans.InvokeSearch(opts);//搜索数据
oTrans.NotifyAll();//可以触发EpiDataView的EpiViewNotification事件
//属性
oTrans.Session//当前Session
oTrans.LastView//获取最后激活的EpiDataView,一般用于判断当前用户是否在操作某个EpiDataView数据
oTrans.StatusPanel//底部状态栏,可用于显示自定义的状态信息
oTrans.EpiDataViews["POHeader"]//获取当前UI中的EpiDataView对象
当然更多的还是非通用的方法和属性这里就不举例了。
oTrans对象还是实例化Adapter的重要参数。
//实例化POAdapter,并加载对应poNum的数据
POAdapter adp = new POAdapter(oTrans);
adp.BOConnect();
adp.GetByID(poNum)
adp.Dispose();
三、baseToolbarsManager
baseToolbarsManager对象同oTans一样,在客制中默认已经生成获取该对象的代码。
baseToolbarsManager是用于管理顶部工具栏菜单的对象。常用功能如:
//禁用删除工具
baseToolbarsManager.Tools["DeleteTool"].SharedProps.Enabled = false;
//隐藏搜索工具
baseToolbarsManager.Tools["PrimarySearchTool"].SharedProps.Visible = false;
//新增一个New菜单,并添加点击事件
ButtonTool btToolNew= new ButtonTool("btToolNew");
btToolNew.SharedProps.Caption = "New";
btToolNew.SharedProps.DisplayStyle = ToolDisplayStyle.ImageOnlyOnToolbars;//在工具栏中只显示图标
EpiBaseForm.setImageOnTool(btToolNew, "New");//在工具栏中显示的图片ID
btToolNew.ToolClick += btToolNew_ToolClick;//为按钮添加事件
baseToolbarsManager.Tools.AddRange(new ToolBase[] { btToolNew });//在添加到工具栏前,需要先添加到baseToolbarsManager里面
UltraToolbar standardTools = baseToolbarsManager.Toolbars["Standard Tools"];
standardTools.Tools.InsertTool(0, "btToolNew");//将新建的New菜单添加到标准工具栏最前面
//将菜单添加到Actions下拉菜单中
((PopupMenuTool)baseToolbarsManager.Tools["ActionsMenu"]).Tools.AddTool("btToolNew");