新建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();

            base.SetControlName("控件名称");

            base.SetControlDefaultSize(, );//默认大小

        }

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 = "<Pebble ID=\"\" Name=\"P_DealProcess\" Command=\"New\"><Field Name=\"DealProcess.ID\" /></Pebble>";

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

2、解析方法:

            case "new_DealProcessID":

                    m_ProcessID = RegxID(resultXMLInfo.InnerXml,"<Object ID=\"(.*?)\" />");

                    m_ProcessID = m_ProcessID.Replace("<Object ID=\"", "").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<string, Pebble> 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、在基类的数据传递方法中加上属性值

     /// <summary>

        /// 运行时,控件执行的方法

        /// </summary>

        /// <param name="pebbles"></param>

        public virtual void OnControlPropertiesAdded(Dictionary<string, Pebble> 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;
  }
}

【C#基础】CSA控件编写秘籍的更多相关文章

  1. iOS基础UI控件介绍-Swift版

    iOS基础UI控件总结 iOS基础控件包括以下几类: 1.继承自NSObject:(暂列为控件) UIColor //颜色 UIImage //图像 2.继承自UIView: 只能相应手势UIGest ...

  2. SharePoint用户控件编写的简单介绍

    转:http://www.it165.net/design/html/201204/1131.html 我们开发中,通常需要写各种各样的部件来实现我们的展示或者功能,下面就介绍下刚刚接触的QuickP ...

  3. SharePoint 用户控件编写的简单介绍

    我们开发中,通常需要写各种各样的部件来实现我们的展示或者功能,下面就介绍下刚刚接触的QuickPart+用户控件的方式,算是自己的学习笔记,也和大家交流下心得. 1. 新建Web应用程序 2. 在项目 ...

  4. QSS基础-设置控件样式

    1.QSS基础-设置同类控件样式'''QSS基础:Qt Style SheetQt样式表用于设置控件的样式和风格(比如控件的背景色,字体颜色,字体大小等)和CSS的功能比较相似,功能相似''' fro ...

  5. Objective-C ,ios,iphone开发基础:picker控件详解与使用,(实现省市的二级联动)

    第一步:新建一个单视图(single view)的工程, 命名为pickerTest,不要勾选下面两个选项,第一个是新版本里面的,第二个是单元测试,现在用不着. 点击next  ->creat之 ...

  6. iOS开发基础-UITableView控件简单介绍

     UITableView 继承自 UIScrollView ,用于实现表格数据展示,支持垂直滚动.  UITableView 需要一个数据源来显示数据,并向数据源查询一共有多少行数据以及每一行显示什么 ...

  7. Flex 自定义打印控件编写

    打印历来是web应用一个比较棘手的问题,幸好flex web应用是运行在flash player上的,flash player可以访问打印机,所以flex 应用可以实现比较强大的打印功能.Flex 自 ...

  8. 控件编写:增强 TMEMO (一)(增加对WM_HSCROLL消息的处理)

    相信没有什么人对 MEMO 陌生了吧.尽管其组件的功能不错.但是,对它进行一些功能的改进,可以更好的使用. 有的时候,我们想要知道,当前的坐标是什么?甚至,想要在 滚动条滚动时触发一些事件. 但,TM ...

  9. MFC对话框贴图基础上控件Stasic变成透明的

    对应WM_CTLCOLOR函数 加入下面代码: HBRUSH CMFCApplication2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) ...

随机推荐

  1. 在Linux系统安装VMware Tools

    --Install VMware Tools --复制VMware Tools-xxx.tar.gz到根目录 cd /tar -vzxf VMware Tools-xxx.tar.gzcd vmwar ...

  2. android常用http框架介绍

    测试数据 1.HttpURLConnection:在Android 2.2版本之前,HttpClient拥有较少的bug,因此使用它是最好的选择.而在Android 2.3版本及以后,HttpURLC ...

  3. 使程序能够引入.json文件, 为网站添加 MIME 映射

    确认启用了 MIME 映射,或使用命令行工具 appcmd.exe 为网站添加 MIME 映射. 若要设置 MIME 类型,请在 IIS Express 安装目录中运行以下命令: appcmd set ...

  4. 深入理解 CSS变形 transform(3d)

    坐标轴 在了解透视之前,首先要先了解坐标轴.3D变形与2D变形最大的不同就在于其参考的坐标轴不同.2D变形的坐标轴是平面的,只存在x轴和y轴,而3D变形的坐标轴则是x.y.z三条轴组成的立体空间,x轴 ...

  5. hdu 1232

    以前写的.....拿出来看看.... 并查集模板: #include <iostream> #include <string> using namespace std; int ...

  6. 学习日记-----ORM

    ORM ORM(Object Relation Mapping)对象关系映射 实质:将数据库中 的业务数据用对象的形式表现出来,使用ORM在业务逻辑层和数据访问层之间充当桥梁 核心原则: 简单性 传达 ...

  7. 实现SQLServer数据库转成MYSQL数据库

    1.首先需要下载安装工具Navicat Premium. 2.注意:将数据库移至本地SQLServer,我试过直接在局域网上其他SQLServer服务器上想转到本地Mysql好像有问题,想将远程数据库 ...

  8. Swift - 38 - 枚举的基本语法

    //: Playground - noun: a place where people can play import UIKit // 创建一个枚举类型就相当于创建了一个新的数据类型, 所以首字母应 ...

  9. mysql数据表如何导入MSSQL中

    本案例演示所用系统是windows server 2012.其它版本windows操作系统类似. 1,首先需要下载mysql odbc安装包. http://dev.mysql.com/downloa ...

  10. cocos2dx之触摸事件

    要使精灵能够接收到触摸事件,无非要做三件事. 注册触摸事件; 接收触摸事件; 处理触摸事件. 下面就从这三点出发,来了解一下精灵如何响应触摸事件. 1.注册触摸事件 精灵类Poker继承Sprite和 ...