博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C#基础】CSA控件编写秘籍
阅读量:6640 次
发布时间:2019-06-25

本文共 6198 字,大约阅读时间需要 20 分钟。

新建CSA控件

1、新建一个纯类,命名空间是:

namespace SimPerfect.CSAControlLibrary.CSAControls

2、实现两个构造函数:无参和传Candy参数

public CDealProcess()        {            InitMe();        }        public CDealProcess(Candy parentCandy)        {            this.ParentCandy = parentCandy;            InitMe();        }

3、编写InitMe()方法初始化控件属性:

private void InitMe()        {            base.SetDragMode(1);            base.SetControlName("控件名称");            base.SetControlDefaultSize(315, 975);//默认大小        }

4、重写RefreshMe()方法并进行异步消息事件的注册

public override void RefreshMe()        {            base.RefreshMe();            if (this.ParentCandy != null && this.ParentCandy.BindPebble != null)            {                ParentCandy.BindPebble.Event_PebbleRunSQLInvokeIDWithReturn -= new Pebble.EVENT_PebbleRunSQLInvokeIDWithReturn(BindPebble_Event_PebbleRunSQLInvokeIDWithReturn);                ParentCandy.BindPebble.Event_PebbleRunSQLInvokeIDWithReturn += new Pebble.EVENT_PebbleRunSQLInvokeIDWithReturn(BindPebble_Event_PebbleRunSQLInvokeIDWithReturn);            }        }

5、重写UpdateMe()方法

public override void UpdateMe()        {            base.UpdateMe();            FreshList();        }

6、编写异步消息处理方法

public void BindPebble_Event_PebbleRunSQLInvokeIDWithReturn(string InvokeID, System.Xml.XmlElement resultXMLInfo)        {            DataExchange dataExchange = new DataExchange();            DataRows dataRows = dataExchange.ProcessReceivedData(resultXMLInfo);            switch (InvokeID)            {                case "**********":                //处理返回xml的函数                    break;            }        }

7、给DTE发送消息的方法

//发送查询命令        private void SendQueryCommand(string strSQL, string commandType)        {            if (ParentCandy != null)            {                if (ParentCandy.BindPebble != null)                {                    ParentCandy.BindPebble.Method_DTESQLCommand(strSQL, commandType, false);                }            }        }

8、重写OnResize(EventArgs e)调整界面位置

protected override void OnResize(EventArgs e)        {            base.OnResize(e);        }

Pabble数据库操作

1、   获取工单ID

在很多CSA控件操作中都需要操作工单ID,这时候可以通过以下两个方法实现工单ID的获取:

(1)绑定一个Pabble,Pabble中需要选择Order对象的Order.ID属性,并通过如下代码获取

m_OrderID = ParentCandy.BindPebble.GetFieldValue("Order.ID");

(2)直接通过工单的P_Order获取

m_OrderID = ParentCandy.BindPebble.AllPebbles["P_Order"].GetFieldValue("Order.ID");

2、GET、SET其他PABBLE信息,需要先判断PABBLE是否存在否则会报错。

if (ParentCandy.BindPebble.AllPebbles.ContainsKey("P_Order"))           {               ParentCandy.BindPebble.AllPebbles["P_Order"].SetFieldValue("Order.HandleType.ID", _Value);           }

插入数据之前获取ID

1、发送Pabble内容:

string newPabble = "
";ParentCandy.BindPebble.Method_DTEPebbleCommand(newPabble, "new_DealProcessID");

2、解析方法:

            case "new_DealProcessID":                    m_ProcessID = RegxID(resultXMLInfo.InnerXml,"");                    m_ProcessID = m_ProcessID.Replace("", "");                    if (string.IsNullOrEmpty(m_ProcessID))                    {                        MessageBox.Show("服务器开小差了,请重新点击新增!", "提示", MessageBoxButtons.OK);                        return;                    }                    else                    {                        //根据取到的ID,进行业务处理                    }                    break;

获取当前座席信息

private string m_EmployeeWorkID = Commonuse.mSystemDataObjects.AgentWorkID;private string m_EmployeeID = Commonuse.mSystemDataObjects.AgentID;

添加工单编辑器中的控件属性配置项

1、首先定义变量

在CSABaseControl基类中新加属性

例如上传附件的控件:

     //CAttachFiles        public string CAF_FTPServerIP = "";//工单上传下载附件的FTP服务器地址           public string CAF_FTPUserID = "";//工单上传下载附件FTP服务器登录的用户名        public string CAF_FTPPassword = "";//工单上传下载附件FTP服务器登录密码        public string CAF_FileLimit = "";//附件大小限制

2、自定义CSA控件重写OnControlPropertiesAdded方法获取父类CSABaseControl中的变量

public override void OnControlPropertiesAdded(Dictionary
pebbles) { base.OnControlPropertiesAdded(pebbles); //重新赋值 FTPServerIP = CAF_FTPServerIP; FTPUserID = CAF_FTPUserID; FTPPassword = CAF_FTPPassword; FileLimit = CAF_FileLimit; }

3、配置在工单编辑器中显示,在CSABaseControl基类中添加如下配置:

//初始化控件属性        private void InitCSAControlPropertyInfos()        {            if (ParentCandy.IsEdit)            {                CSAControlPropertyInfos.Clear();//最后一个参数表示需要对哪个控件生效。                AddCSAControlProperty("CAF_FTPServerIP", "", DEF_ControlPropertyValueType.ShortTextBoxValue, "FTP服务器IP", "CWorkSheetAttachedFile");                AddCSAControlProperty("CAF_FTPUserID", "", DEF_ControlPropertyValueType.ShortTextBoxValue, "FTP服务器用户名", "CWorkSheetAttachedFile");                AddCSAControlProperty("CAF_FTPPassword", "", DEF_ControlPropertyValueType.ShortTextBoxValue, "FTP服务器密码", "CWorkSheetAttachedFile");                AddCSAControlProperty("CAF_FileLimit", "", DEF_ControlPropertyValueType.ShortTextBoxValue, "附件大小限制", "CWorkSheetAttachedFile");                AddCSAControlProperty("CF_FTPServerIP","",DEF_ControlPropertyValueType.ShortTextBoxValue,"FTP服务器IP","CFAX");                AddCSAControlProperty("CF_FTPUserID","",DEF_ControlPropertyValueType.ShortTextBoxValue,"FTP服务器用户名","CFAX");                AddCSAControlProperty("CF_FTPPassword","",DEF_ControlPropertyValueType.ShortTextBoxValue,"FTP服务器密码","CFAX");            }        }

4、在基类的数据传递方法中加上属性值

    ///         /// 运行时,控件执行的方法        ///         ///         public virtual void OnControlPropertiesAdded(Dictionary
pebbles) { foreach (CSAControlProperty controlProperty in CSAControlPropertyInfos) { switch (controlProperty.Name) {           //CFAX case "CF_FTPServerIP": CF_FTPServerIP = controlProperty.Value; break; case "CF_FTPUserID": CF_FTPUserID = controlProperty.Value; break; case "CF_FTPPassword": CF_FTPPassword = controlProperty.Value; break; case "CF_IVRNum": CF_IVRNum = controlProperty.Value; break;  } }

 

转载地址:http://xjovo.baihongyu.com/

你可能感兴趣的文章
54:mysql修改密码|连接mysql|mysql常用命令
查看>>
我的友情链接
查看>>
线程池的设计(一):半同步半异步线程池的设计
查看>>
建立JNI层的本地对象,并与JAVA层交互方法
查看>>
剑指offer-面试题3.二维数组中的查找
查看>>
查看/清除DNS解析记录
查看>>
linux命令行计算器
查看>>
python处理中文字符
查看>>
XML Schema的基本语法(转)
查看>>
mysql 数据库连接数的更改
查看>>
系统减肥批处理
查看>>
Centos挂载NTFS格式的移动硬盘
查看>>
sybase集群总结
查看>>
获取语句执行时间
查看>>
mysql字段类型、范围详解
查看>>
MySQL 高可用MMM
查看>>
在ubuntu16.4系统里默认网卡名称enp0s3,如何修改成eth0
查看>>
我的友情链接
查看>>
服务器系统安全防范之浅谈
查看>>
Cisco与Linux的NAT-Linux实现Cisco风格的NAT
查看>>