您的位置:首页 > 编程语言 > C#

【C#基础】CSA控件编写秘籍

2016-09-27 10:57 344 查看

新建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 = "<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;
  }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: