void Disconnect(ref ComClient client) { bool connected = true; Stopwatch sw = new Stopwatch(); client.OnDisconnected += (node) => { connected = false; }; client.Disconnect(); sw.Start(); while (true) { if (!client.IsConnected && !connected) { break; } else if (sw.Elapsed.Seconds >= 3) { client.Close(); throw new TimeoutException(); } Task.Delay(100); } sw.Stop(); client.Close(); }
public bool ConnectToServer(string ipaddr, string port) { this.comSvcIPaddr = ipaddr; this.comSvcPort = DefaultPort; if ((port != null) && (port != "")) { this.comSvcPort = port; } if (comSvc == null) { comSvc = new ComServiceServer(); } if (comSvc.IsRunning() == false) { comSvc.StartService(masterClient, comSvcPort); } if (((ipaddr == "127.0.0.1") || (ipaddr == "localhost")) && (masterClient == false)) { Debug.Log("Cannot connect to local com service unless you are the host (master) client"); return(false); } if (comCli == null) { comCli = new ComClient(ipaddr, comSvcPort, GetPlayerName()); } return(comCli.PingService()); }
//[Fact(Skip = "Skipped")] public void OpenClose() { Util.Log("OpenClose"); ComClient client = new ComClient(false); client.PortNumber = this.server.Port; client.ListenPortNumber = this.server.Port + 1; client.Open(); client.Close(); }
public override string GetColsByPanelNam(string PanelNam, string FrmNam, string TabNam) { try { return(ComClient.GetColsByPanelNam(PanelNam, FrmNam, TabNam)); } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } return(""); }
/// <summary> /// 覆盖方案事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Btn_Save_Click(object sender, EventArgs e) { try { //获取面板中最后一个用户控件 int ContrNum = Pal_FlCtner.Controls.Count; UsrContr_Filter Filter = (UsrContr_Filter)Pal_FlCtner.Controls[ContrNum - 1]; if (((SearchLookUpEdit)Filter.Controls["SLkUp_ColNams"]).EditValue != null) { if (BracketsMatch(GetFltSltDtl())) { DialogResult Result = XtraMessageBox.Show("您是否需要覆盖本过滤方案!", "提醒", MessageBoxButtons.OKCancel); if (Result == DialogResult.OK) { //EditFltSlt(); if (SltEditNode != null) { List <DTSerializer <string, object> > List_DTObj = GetFltSltDtl(); foreach (DTSerializer <string, object> DTObj2 in List_DTObj) { DTObj2.Add("FSltID", SltEditNode.GetValue("FSltID").ToString()); DTObj2.Add("FSltType", "0"); } //开始事务 ComClient.BeginTransaction(); ComClient.SaveFltSlt1(OperType.Delete, Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj), "t_ADMM_FltSltforDtl", " FSltID='" + SltEditNode.GetValue("FSltID").ToString() + "'"); ComClient.SaveFltSlt1(OperType.AddSave, Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj), "t_ADMM_FltSltforDtl", ""); //提交事务 ComClient.CommitTransaction(); //将树节点切换成不可编辑模式 TrList_FltSlt.OptionsBehavior.Editable = false; } } } else { return; } } else { Common.ShowMsg("字段名称不能为空!"); } } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }
//[Fact(Skip = "Skipped")] public void ConnectDisconnect() { Util.Log("ConnectDisconnect"); ComClient client = new ComClient(false); client.PortNumber = this.server.Port; client.ListenPortNumber = this.server.Port + 1; Connect(ref client); server.Server.BeaconStop(); Disconnect(ref client); }
/// <summary> /// 删除方案事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Btn_Drop_Click(object sender, EventArgs e) { try { //获取当前选择的方案名称 string FSltID = TrList_FltSlt.FocusedNode.GetValue("FSltID").ToString(); ComClient.BeginTransaction(); ComClient.SaveFltSlt1(OperType.Delete, "", "t_ADMM_FltSltList", " FSltID='" + FSltID + "'"); ComClient.SaveFltSlt1(OperType.Delete, "", "t_ADMM_FltSltforDtl", " FSltID='" + FSltID + "'"); ComClient.CommitTransaction(); TrList_FltSlt.DataSource = Serializer.DeserializeXMLToDT(ComClient.GetFltSlt(CurUsrID, FrmNam)); TrList_FltSlt.ExpandAll(); } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }
void Connect(ref ComClient client) { bool connected = false; Stopwatch sw = new Stopwatch(); client.SetBeaconAcceptFunction((data) => { if (data == "Test") { return(true); } else { return(false); } }); client.OnConnected += (node) => { connected = true; }; client.Open(); client.AcceptBeacon = true; //server.Server.BeaconStart(); //server.Server.SendConnectBeacon("127.0.0.1"); client.Connect("127.0.0.1"); sw.Start(); while (true) { if (client.IsConnected && connected) { break; } else if (sw.Elapsed.Seconds >= 3) { client.Close(); server.Server.BeaconStop(); throw new TimeoutException(); } Task.Delay(100); } sw.Stop(); }
/// <summary> /// 另存为弹窗事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Btn_SaveAs_Click(object sender, EventArgs e) { try { //获取面板中最后一个用户控件 int ContrNum = Pal_FlCtner.Controls.Count; UsrContr_Filter Filter = (UsrContr_Filter)Pal_FlCtner.Controls[ContrNum - 1]; if (((SearchLookUpEdit)Filter.Controls["SLkUp_ColNams"]).EditValue != null) { FrmSaveAs frmSaveAs = new DiousEPortal.FrmSaveAs(); frmSaveAs.ComClient = ComClient; frmSaveAs.CurUsrID = CurUsrID; frmSaveAs.CurUsrName = CurUsrName; frmSaveAs.FrmNam = FrmNam; CurFltSltDtl = GetFltSltDtl(); //判断左右括号是否匹配,如果不匹配则退出方法 if (BracketsMatch(CurFltSltDtl)) { //传递过滤方案明细数据 frmSaveAs.FltSltDtl = CurFltSltDtl; frmSaveAs.ShowDialog(); TrList_FltSlt.DataSource = Serializer.DeserializeXMLToDT(ComClient.GetFltSlt(CurUsrID, FrmNam)); TrList_FltSlt.ExpandAll(); } else { return; } } else { Common.ShowMsg("字段名不能为空!"); } } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }
/// <summary> /// 过滤方案双击选择事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TrList_FltSlt_DoubleClick(object sender, EventArgs e) { try { //获取当前选择的方案名称 string SltName = TrList_FltSlt.FocusedNode.GetDisplayText("FSltName"); if (ComClient.CheckIfUsrSlt(SltName, CurUsrID, FrmNam) >= 1) { //将树节点切换成编辑模式 TrList_FltSlt.OptionsBehavior.Editable = true; } else { //将树节点切换成不可编辑模式 TrList_FltSlt.OptionsBehavior.Editable = false; } } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }
/// <summary> /// 修改过滤方案 /// </summary> private void EditFltSlt() { try { if (SltEditNode != null) { string SltName = SltEditNode.GetValue("FSltName").ToString(); string SltID = SltEditNode.GetValue("FSltID").ToString(); if (ComClient.EditFltSlt(SltName, SltID) < 1) { Common.ShowMsg("方案名称保存失败!"); } //将树节点切换成不可编辑模式 TrList_FltSlt.OptionsBehavior.Editable = false; } } catch (Exception) { throw; } }
/// <summary> /// 保存过滤方案 /// </summary> /// <param name="operType">操作类型</param> /// <param name="TabName">表名称</param> /// <param name="ParentID">父方案ID</param> /// <param name="SltType">过滤方案类型</param> /// <param name="KeyWords">查询关键字</param> private void AddFltSlt(OperType operType, string ParentID, string SltType, string KeyWords, List <DTSerializer <string, object> > List_DTObj) { try { //获取当前最大的方案ID string MaxSltID = ComClient.GetMaxSltID(FrmNam, SltType, ParentID); DTSerializer <string, object> DTObj1 = new DTSerializer <string, object>(); List <DTSerializer <string, object> > List_DTObj1 = new List <DTSerializer <string, object> >(); DTObj1.Add("FSltID", MaxSltID); DTObj1.Add("FSltName", Txt_SltName.Text.Trim()); DTObj1.Add("FParentID", ParentID); DTObj1.Add("FUsrID", CurUsrID); DTObj1.Add("FFrmName", FrmNam); DTObj1.Add("FSltType", SltType); List_DTObj1.Add(DTObj1); //开始SQL事务 ComClient.BeginTransaction(); ComClient.SaveFltSlt1(operType, Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj1), "t_ADMM_FltSltList", KeyWords); //向查询方案明细中追加方案ID和方案类型 foreach (DTSerializer <string, object> DTObj2 in List_DTObj) { DTObj2.Add("FSltID", MaxSltID); DTObj2.Add("FSltType", SltType); } //增加/修改/删除过滤方案明细 ComClient.SaveFltSlt1(operType, Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj), "t_ADMM_FltSltforDtl", KeyWords); //提交事务 ComClient.CommitTransaction(); } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }
/// <summary> /// 过滤方案单击选择事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TrList_FltSlt_Click(object sender, EventArgs e) { try { //获取当前选择的方案名称 string SltName = TrList_FltSlt.FocusedNode.GetDisplayText("FSltName"); //获取当前选择的树节点 SltEditNode = TrList_FltSlt.FocusedNode; //检查当前选择的方案是否是该用户建立的方案,如果是,则可以删除,否则不能删除。 if (ComClient.CheckIfUsrSlt(SltName, CurUsrID, FrmNam) >= 1) { Btn_Drop.Enabled = true; } else { Btn_Drop.Enabled = false; } } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }
/// <summary> /// 初始化下拉列表控件关键属性 /// </summary> /// <param name="LkUpContr">下拉列表控件对象</param> public void InitLkUp(Control Contr) { try { string[] LkUp_Data; foreach (Control Control1 in Contr.Controls) { if (Control1.Name == "LkUp_Brackets1") { //LkUp_Data = new string[] { "(", "((", "(((" }; List <ExpandoObject> ListEObj = new List <ExpandoObject>(); dynamic EObj1 = new ExpandoObject(); EObj1.FRemark = "("; EObj1.FColNm = " ( "; ListEObj.Add(EObj1); dynamic EObj2 = new ExpandoObject(); EObj2.FRemark = "(("; EObj2.FColNm = " (( "; ListEObj.Add(EObj2); dynamic EObj3 = new ExpandoObject(); EObj3.FRemark = "((("; EObj3.FColNm = " ((( "; ListEObj.Add(EObj3); ((LookUpEdit)Control1).Properties.DisplayMember = "FRemark"; ((LookUpEdit)Control1).Properties.ValueMember = "FColNm"; ((LookUpEdit)Control1).Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("FRemark")); ((LookUpEdit)Control1).Properties.DataSource = ListEObj; //清空默认值 ((LookUpEdit)Control1).Properties.NullText = ""; ((LookUpEdit)Control1).Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; } else if (Control1.Name == "LkUp_Brackets2") { //LkUp_Data = new string[] { ")", "))", ")))" }; List <ExpandoObject> ListEObj = new List <ExpandoObject>(); dynamic EObj1 = new ExpandoObject(); EObj1.FRemark = ")"; EObj1.FColNm = " ) "; ListEObj.Add(EObj1); dynamic EObj2 = new ExpandoObject(); EObj2.FRemark = "))"; EObj2.FColNm = " )) "; ListEObj.Add(EObj2); dynamic EObj3 = new ExpandoObject(); EObj3.FRemark = ")))"; EObj3.FColNm = " ))) "; ListEObj.Add(EObj3); ((LookUpEdit)Control1).Properties.DisplayMember = "FRemark"; ((LookUpEdit)Control1).Properties.ValueMember = "FColNm"; ((LookUpEdit)Control1).Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("FRemark")); ((LookUpEdit)Control1).Properties.DataSource = ListEObj; //清空默认值 ((LookUpEdit)Control1).Properties.NullText = ""; ((LookUpEdit)Control1).Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; } else if (Control1.Name == "LkUp_Rlt") { List <ExpandoObject> ListEObj = new List <ExpandoObject>(); dynamic EObj1 = new ExpandoObject(); EObj1.FRemark = "并且"; EObj1.FColNm = " and "; ListEObj.Add(EObj1); dynamic EObj2 = new ExpandoObject(); EObj2.FRemark = "或者"; EObj2.FColNm = " or "; ListEObj.Add(EObj2); //LkUp_Data = new string[] { "并且", "或者" }; ((LookUpEdit)Control1).Properties.DisplayMember = "FRemark"; ((LookUpEdit)Control1).Properties.ValueMember = "FColNm"; ((LookUpEdit)Control1).Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("FRemark")); ((LookUpEdit)Control1).Properties.DataSource = ListEObj; //清空默认值 ((LookUpEdit)Control1).Properties.NullText = ""; ((LookUpEdit)Control1).Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; } else if (Control1.Name == "SLkUp_ColNams") { LkUp_Data = new string[] { "开始日期", "结束日期", "订单号" }; ((SearchLookUpEdit)Control1).Properties.DisplayMember = "FRemark"; ((SearchLookUpEdit)Control1).Properties.ValueMember = "FColNm"; List <ExpandoObject> ListEObj = DataTransformer.LoadData(ComClient.GetFltColsByPanelNam("Panel5", FrmNam)); //增加一个可见的绑定列 ((SearchLookUpEdit)Control1).Properties.View.Columns.AddVisible("FRemark"); ((SearchLookUpEdit)Control1).Properties.DataSource = ListEObj; ((SearchLookUpEdit)Control1).Properties.NullText = ""; ((SearchLookUpEdit)Control1).Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; } else if (Control1.Name == "LkUp_Cdt") { List <ExpandoObject> ListEObj = new List <ExpandoObject>(); dynamic EObj1 = new ExpandoObject(); EObj1.FRemark = "以...开头"; EObj1.FColNm = " like"; ListEObj.Add(EObj1); dynamic EObj2 = new ExpandoObject(); EObj2.FRemark = "等于"; EObj2.FColNm = " = "; ListEObj.Add(EObj2); dynamic EObj3 = new ExpandoObject(); EObj3.FRemark = "包含"; EObj3.FColNm = " like "; ListEObj.Add(EObj3); dynamic EObj4 = new ExpandoObject(); EObj4.FRemark = "不包含"; EObj4.FColNm = " not like "; ListEObj.Add(EObj4); dynamic EObj5 = new ExpandoObject(); EObj5.FRemark = "大于"; EObj5.FColNm = " > "; ListEObj.Add(EObj5); dynamic EObj6 = new ExpandoObject(); EObj6.FRemark = "大于等于"; EObj6.FColNm = " >= "; ListEObj.Add(EObj6); dynamic EObj7 = new ExpandoObject(); EObj7.FRemark = "小于"; EObj7.FColNm = " < "; ListEObj.Add(EObj7); dynamic EObj8 = new ExpandoObject(); EObj8.FRemark = "小于等于"; EObj8.FColNm = " <= "; ListEObj.Add(EObj8); dynamic EObj9 = new ExpandoObject(); EObj9.FRemark = "不等于"; EObj9.FColNm = " != "; ListEObj.Add(EObj9); dynamic EObj10 = new ExpandoObject(); EObj10.FRemark = "从...到..."; EObj10.FColNm = " between "; ListEObj.Add(EObj10); dynamic EObj12 = new ExpandoObject(); EObj12.FRemark = "为空"; EObj12.FColNm = " = ''"; ListEObj.Add(EObj12); dynamic EObj13 = new ExpandoObject(); EObj13.FRemark = "不为空"; EObj13.FColNm = " != ''"; ListEObj.Add(EObj13); dynamic EObj14 = new ExpandoObject(); EObj14.FRemark = "不在...之间"; EObj14.FColNm = " not between "; ListEObj.Add(EObj14); dynamic EObj15 = new ExpandoObject(); EObj15.FRemark = "以...结尾"; EObj15.FColNm = "like "; ListEObj.Add(EObj15); dynamic EObj16 = new ExpandoObject(); EObj16.FRemark = "在列表中"; EObj16.FColNm = " in "; ListEObj.Add(EObj16); dynamic EObj17 = new ExpandoObject(); EObj17.FRemark = "不在列表中"; EObj17.FColNm = " not in "; ListEObj.Add(EObj17); //LkUp_Data = new string[] { "以...开头", "等于", "包含", "不包含", "大于", "大于等于", "小于", "小于等于", "不等于", "从...到...", "为空", "不为空", "不在...之间", "以...结尾", "在列表中", "不在列表中" }; ((LookUpEdit)Control1).Properties.DisplayMember = "FRemark"; ((LookUpEdit)Control1).Properties.ValueMember = "FColNm"; ((LookUpEdit)Control1).Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("FRemark")); ((LookUpEdit)Control1).Properties.DataSource = ListEObj; //清空默认值 ((LookUpEdit)Control1).Properties.NullText = ""; ((LookUpEdit)Control1).Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; } else if (Control1.Name == "CBox_CdtValue1" || Control1.Name == "CBox_CdtValue2" || Control1.Name == "CBox_CdtValue3") { ((ComboBoxEdit)Control1).Properties.NullText = ""; ((ComboBoxEdit)Control1).Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; } else if (Control1.GetType().ToString() == "DevExpress.XtraEditors.DateEdit") { //清空默认值 ((DateEdit)Control1).Properties.NullText = ""; ((DateEdit)Control1).Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; } } } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }
/// <summary> /// 保存用户组资料数据 /// </summary> /// <returns>1:保存成功;0:保存失败</returns> public override int SaveData() { string TabNam = "t_ADMM_GrpMst"; string PriKey = "fGrpCode"; //string FrmNam = "DiousEPortal.FrmUserGroup"; FocColNam = "分组代号"; if (BtnName == BtnNam.Add || BtnName == BtnNam.Copy) { FocColVal = Txt_Grpcode.Text; } else { //初始化FocColVal,方便后续新增数据定位行用 FocColVal = (string)((IDictionary <string, object>)((ExpandoObject)View_Common2.GetFocusedRow()))[FocColNam]; } //初始化主键控件名称 string ContrNam = KeyContrNam[0]; try { string SQL = ""; List <DTSerializer <string, object> > List_DTObj = new List <DTSerializer <string, object> >(); List <DTSerializer <string, object> > List_DTObj1 = new List <DTSerializer <string, object> >(); List <ExpandoObject> List_EObj; //开始SQL事务 ComClient.BeginTransaction(); //只有不重复才往下执行 if (BtnName == BtnNam.Add && ComClient.RepeatCheck(TabNam, PriKey, Txt_Grpcode.Text) == 0) { //1.查询哪些表需要更新(输出表名、面板名、窗体实例名) List <ExpandoObject> List_UpTab = LoadData(ComClient.GetTabByFrmNam(FrmNam)); foreach (dynamic UpTab in List_UpTab) { //2.根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(UpTab.FTblNm, FrmNam, OperType.AddSave, "", UpTab.FPanelNam, "", "")); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } List <List <ExpandoObject> > List_PanelObjs = new List <List <ExpandoObject> >(); //根据面板名称读取该面板内所有相关字段信息 List <ExpandoObject> List_Panel4EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel4", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel4EObj); List <ExpandoObject> List_Panel3EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel3", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel3EObj); List <ExpandoObject> List_Panel7EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel7", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel7EObj); List <ExpandoObject> List_Panel8EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel8", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel8EObj); List <ExpandoObject> List_Panel9EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel9", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel9EObj); List <ExpandoObject> List_Panel10EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel10", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel10EObj); List <ExpandoObject> List_Panel11EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel11", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel11EObj); List <ExpandoObject> List_Panel12EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel12", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel12EObj); //用于存储该表在所有面板内的字段值 DTSerializer <string, object> DTObj = new DTSerializer <string, object>(); foreach (List <ExpandoObject> List_PanelObj in List_PanelObjs) { if (List_PanelObj.Count != 0) { var Query = from Obj in List_PanelObj where EObjToIDObj(Obj)["FPanelNam"].ToString() == "Panel3" select Obj; //Panel3面板中是网格控件,则按照以下逻辑单独处理 if (Query.Count <ExpandoObject>() > 0) { //遍历View_Common1数据源获取每个字段的值 foreach (ExpandoObject EObj3 in (BindingList <ExpandoObject>)View_Common1.DataSource) { IDictionary <string, object> IDObj = (IDictionary <string, object>)EObj3; DTSerializer <string, object> DTObj1 = new DTSerializer <string, object>(); foreach (string Key in IDObj.Keys) { //利用LinQ将中文字段名转换成英文字段名 var Query1 = from Obj in List_PanelObj where EObjToIDObj(Obj)["FRemark"].ToString() == Key select EObjToIDObj(Obj)["FColNm"].ToString(); string Key1 = ""; foreach (var key in Query1) { Key1 = key.ToString(); } if (Key1 != "") { if (Key1 == PriKey) { DTObj1.Add(Key1, Panel4.Controls[ContrNam].Text); } else { DTObj1.Add(Key1, IDObj[Key].ToString()); } } } //3.循环完Panel3面板的每一行字段后,生成更新对象列表 List_DTObj1.Add(DTObj1); } //4.服务端根据接收到的对象列表更新数据库 //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj1), SQL, OperType.AddSave); ComClient.SaveData1(Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj1), SQL); } //非Panel3面板,则按照以下逻辑单独处理 else { //根据面板内的字段信息自动生成更新对象列表 foreach (dynamic EObj in List_PanelObj) { //如果该字段绑定了指定控件,则按照控件指定值更新 if (EObj.FContrNam != "") { if (EObj.FColNm == "fCFlag") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text == "已审核" ? 1 : 0); } else if (EObj.FColNm == "fIfUse") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text == "已启用" ? 1 : 0); } else { if (EObj.FPanelNam == "Panel4") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel7") { DTObj.Add(EObj.FColNm, Panel7.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel8") { DTObj.Add(EObj.FColNm, Panel8.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel9") { DTObj.Add(EObj.FColNm, Panel9.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel10") { DTObj.Add(EObj.FColNm, Panel10.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel11") { DTObj.Add(EObj.FColNm, Panel11.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel12") { DTObj.Add(EObj.FColNm, Panel12.Controls[EObj.FContrNam].Text); } } } //如果该字段没有绑定任何控件,则按照默认值更新 else { //如果该字段的默认数据类型是DateTime,则默认值是当天 if (EObj.FColNm == "fCDate") { DTObj.Add(EObj.FColNm, DateTime.Now.ToString()); } else if (EObj.FColNm == "fCreatorID") { DTObj.Add(EObj.FColNm, CurUsrID); } else if (EObj.FColNm == "fCreator") { DTObj.Add(EObj.FColNm, CurUsrName); } else { DTObj.Add(EObj.FColNm, EObj.FDefValue); } } } //3.循环完所有面板的字段后,生成更新对象列表 List_DTObj.Add(DTObj); //4.服务端根据接收到的对象列表更新数据库 //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj), SQL, OperType.AddSave); ComClient.SaveData1(Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj), SQL); } } } } //提交事务 ComClient.CommitTransaction(); BtnName = BtnNam.Null; //重新刷新网格数据 Grip_Common2.DataSource = LoadData(UsrGroupClient.GetUsrGrpsToChCol("#Tmp_" + CurUsrID + "_" + DateTime.Now.Second.ToString(), "0", "")); return(1); } else if (BtnName == BtnNam.Copy && ComClient.RepeatCheck(TabNam, PriKey, Txt_Grpcode.Text) == 0) { //1.查询哪些表需要更新(输出表名、面板名、窗体实例名) List <ExpandoObject> List_UpTab = LoadData(ComClient.GetTabByFrmNam(FrmNam)); foreach (dynamic UpTab in List_UpTab) { //2.根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(UpTab.FTblNm, FrmNam, OperType.AddSave, "", UpTab.FPanelNam, "", "")); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } List <List <ExpandoObject> > List_PanelObjs = new List <List <ExpandoObject> >(); //根据面板名称读取该面板内所有相关字段信息 List <ExpandoObject> List_Panel4EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel4", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel4EObj); List <ExpandoObject> List_Panel3EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel3", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel3EObj); List <ExpandoObject> List_Panel7EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel7", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel7EObj); List <ExpandoObject> List_Panel8EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel8", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel8EObj); List <ExpandoObject> List_Panel9EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel9", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel9EObj); List <ExpandoObject> List_Panel10EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel10", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel10EObj); List <ExpandoObject> List_Panel11EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel11", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel11EObj); List <ExpandoObject> List_Panel12EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel12", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel12EObj); //用于存储该表在所有面板内的字段值 DTSerializer <string, object> DTObj = new DTSerializer <string, object>(); foreach (List <ExpandoObject> List_PanelObj in List_PanelObjs) { if (List_PanelObj.Count != 0) { var Query = from Obj in List_PanelObj where EObjToIDObj(Obj)["FPanelNam"].ToString() == "Panel3" select Obj; //Panel3面板中是网格控件,则按照以下逻辑单独处理 if (Query.Count <ExpandoObject>() > 0) { //遍历View_Common1数据源获取每个字段的值 foreach (ExpandoObject EObj3 in (BindingList <ExpandoObject>)View_Common1.DataSource) { IDictionary <string, object> IDObj = (IDictionary <string, object>)EObj3; DTSerializer <string, object> DTObj1 = new DTSerializer <string, object>(); foreach (string Key in IDObj.Keys) { //利用LinQ将中文字段名转换成英文字段名 var Query1 = from Obj in List_PanelObj where EObjToIDObj(Obj)["FRemark"].ToString() == Key select EObjToIDObj(Obj)["FColNm"].ToString(); string Key1 = ""; foreach (var key in Query1) { Key1 = key.ToString(); } if (Key1 != "") { if (Key1 == PriKey) { DTObj1.Add(Key1, Panel4.Controls[ContrNam].Text); } else { DTObj1.Add(Key1, IDObj[Key].ToString()); } } } //3.循环完Panel3面板的每一行字段后,生成更新对象列表 List_DTObj1.Add(DTObj1); } //4.服务端根据接收到的对象列表更新数据库 //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj1), SQL, OperType.AddSave); ComClient.SaveData1(Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj1), SQL); } //非Panel3面板,则按照以下逻辑单独处理 else { //根据面板内的字段信息自动生成更新对象列表 foreach (dynamic EObj in List_PanelObj) { //如果该字段绑定了指定控件,则按照控件指定值更新 if (EObj.FContrNam != "") { if (EObj.FColNm == "fCFlag") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text == "已审核" ? 1 : 0); } else if (EObj.FColNm == "fIfUse") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text == "已启用" ? 1 : 0); } else { if (EObj.FPanelNam == "Panel4") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel7") { DTObj.Add(EObj.FColNm, Panel7.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel8") { DTObj.Add(EObj.FColNm, Panel8.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel9") { DTObj.Add(EObj.FColNm, Panel9.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel10") { DTObj.Add(EObj.FColNm, Panel10.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel11") { DTObj.Add(EObj.FColNm, Panel11.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel12") { DTObj.Add(EObj.FColNm, Panel12.Controls[EObj.FContrNam].Text); } } } //如果该字段没有绑定任何控件,则按照默认值更新 else { //如果该字段的默认数据类型是DateTime,则默认值是当天 if (EObj.FColNm == "fCDate") { DTObj.Add(EObj.FColNm, DateTime.Now.ToString()); } //if (EObj.FColNm == "fAppDate") //{ // DTObj.Add(EObj.FColNm, DateTime.Now.ToString()); //} else if (EObj.FColNm == "fCreatorID") { DTObj.Add(EObj.FColNm, CurUsrID); } else if (EObj.FColNm == "fCreator") { DTObj.Add(EObj.FColNm, CurUsrName); } else { DTObj.Add(EObj.FColNm, EObj.FDefValue); } } } //3.循环完所有面板的字段后,生成更新对象列表 List_DTObj.Add(DTObj); //4.服务端根据接收到的对象列表更新数据库 //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj), SQL, OperType.AddSave); ComClient.SaveData1(Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj), SQL); //提交事务 ComClient.CommitTransaction(); } } } BtnName = BtnNam.Null; //重新刷新网格数据 Grip_Common2.DataSource = LoadData(UsrGroupClient.GetUsrGrpsToChCol("#Tmp_" + CurUsrID + "_" + DateTime.Now.Second.ToString(), "0", "")); } return(1); } else if (BtnName == BtnNam.Delete) { //1.查询哪些表需要更新(输出表名、面板名、窗体实例名) List <ExpandoObject> List_UpTab = LoadData(ComClient.GetTabByFrmNam(FrmNam)); //获取当前选择行的数据 IDictionary <string, object> IDObj = (IDictionary <string, object>)View_Common2.GetFocusedRow(); foreach (dynamic UpTab in List_UpTab) { List_EObj = LoadData(ComClient.GetTabStrc(UpTab.FTblNm, FrmNam, OperType.Delete, PriKey + " ='" + IDObj[ComClient.GetChColByEnCol(TabNam, PriKey)].ToString() + "'", UpTab.FPanelNam, "", "")); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj1 = (IDictionary <string, object>)EObj; SQL = (string)IDObj1["SQL"]; } //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj), SQL, OperType.Delete); ComClient.SaveData1("", SQL); } //提交事务 ComClient.CommitTransaction(); BtnName = BtnNam.Null; //重新刷新网格数据 Grip_Common2.DataSource = LoadData(UsrGroupClient.GetUsrGrpsToChCol("#Tmp_" + CurUsrID + "_" + DateTime.Now.Second.ToString(), "0", "")); return(1); } else if (BtnName == BtnNam.Edit) { //1.查询哪些表需要更新(输出表名、面板名、窗体实例名) List <ExpandoObject> List_UpTab = LoadData(ComClient.GetTabByFrmNam(FrmNam)); //获取当前选择行的数据 IDictionary <string, object> IDObj1 = (IDictionary <string, object>)View_Common2.GetFocusedRow(); foreach (dynamic UpTab in List_UpTab) { //判断更新表归属于哪个面板 if (UpTab.FPanelNam != "Panel3") { //2.根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(UpTab.FTblNm, FrmNam, OperType.EditSave, PriKey + " ='" + IDObj1[ComClient.GetChColByEnCol(TabNam, PriKey)].ToString() + "'", UpTab.FPanelNam, "", "")); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } } else { //2.根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(UpTab.FTblNm, FrmNam, OperType.Delete, PriKey + " ='" + IDObj1[ComClient.GetChColByEnCol(TabNam, PriKey)].ToString() + "'", UpTab.FPanelNam, "", "")); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } //先执行删除数据操作 //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj1), SQL, OperType.Delete); ComClient.SaveData1("", SQL); //2.根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(UpTab.FTblNm, FrmNam, OperType.AddSave, "", UpTab.FPanelNam, "", "")); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } } List <List <ExpandoObject> > List_PanelObjs = new List <List <ExpandoObject> >(); //根据面板名称读取该面板内所有相关字段信息 List <ExpandoObject> List_Panel4EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel4", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel4EObj); List <ExpandoObject> List_Panel3EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel3", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel3EObj); List <ExpandoObject> List_Panel7EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel7", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel7EObj); List <ExpandoObject> List_Panel8EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel8", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel8EObj); List <ExpandoObject> List_Panel9EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel9", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel9EObj); List <ExpandoObject> List_Panel10EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel10", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel10EObj); List <ExpandoObject> List_Panel11EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel11", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel11EObj); List <ExpandoObject> List_Panel12EObj = Serializer.DeserializeXMLToEObject(ComClient.GetColsByPanelNam("Panel12", FrmNam, UpTab.FTblNm)); List_PanelObjs.Add(List_Panel12EObj); //用于存储该表在所有面板内的字段值 DTSerializer <string, object> DTObj = new DTSerializer <string, object>(); foreach (List <ExpandoObject> List_PanelObj in List_PanelObjs) { if (List_PanelObj.Count != 0) { var Query = from Obj in List_PanelObj where EObjToIDObj(Obj)["FPanelNam"].ToString() == "Panel3" select Obj; //Panel3面板中是网格控件,则按照以下逻辑单独处理 if (Query.Count <ExpandoObject>() > 0) { //遍历View_Common1数据源获取每个字段的值 foreach (ExpandoObject EObj3 in (BindingList <ExpandoObject>)View_Common1.DataSource) { IDictionary <string, object> IDObj = (IDictionary <string, object>)EObj3; DTSerializer <string, object> DTObj1 = new DTSerializer <string, object>(); foreach (string Key in IDObj.Keys) { //利用LinQ将中文字段名转换成英文字段名 var Query1 = from Obj in List_PanelObj where EObjToIDObj(Obj)["FRemark"].ToString() == Key select EObjToIDObj(Obj)["FColNm"].ToString(); string Key1 = ""; foreach (var key in Query1) { Key1 = key.ToString(); } if (Key1 != "") { if (Key1 == PriKey) { DTObj1.Add(Key1, Panel4.Controls[ContrNam].Text); } else { DTObj1.Add(Key1, IDObj[Key].ToString()); } } } //3.循环完Panel3面板的每一行字段后,生成更新对象列表 List_DTObj1.Add(DTObj1); } //4.服务端根据接收到的对象列表更新数据库 //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj1), SQL, OperType.AddSave); ComClient.SaveData1(Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj1), SQL); } //非Panel3面板,则按照以下逻辑单独处理 else { //根据面板内的字段信息自动生成更新对象列表 foreach (dynamic EObj in List_PanelObj) { //如果该字段绑定了指定控件,则按照控件指定值更新 if (EObj.FContrNam != "") { if (EObj.FColNm == "fCFlag") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text == "已审核" ? 1 : 0); } else if (EObj.FColNm == "fIfUse") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text == "已启用" ? 1 : 0); } else { if (EObj.FPanelNam == "Panel4") { DTObj.Add(EObj.FColNm, Panel4.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel7") { DTObj.Add(EObj.FColNm, Panel7.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel8") { DTObj.Add(EObj.FColNm, Panel8.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel9") { DTObj.Add(EObj.FColNm, Panel9.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel10") { DTObj.Add(EObj.FColNm, Panel10.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel11") { DTObj.Add(EObj.FColNm, Panel11.Controls[EObj.FContrNam].Text); } else if (EObj.FPanelNam == "Panel12") { DTObj.Add(EObj.FColNm, Panel12.Controls[EObj.FContrNam].Text); } } } //如果该字段没有绑定任何控件,则按照默认值更新 else { //如果该字段的默认数据类型是DateTime,则默认值是当天 if (EObj.FColNm == "fCDate") { DTObj.Add(EObj.FColNm, IDObj1["建立日期"].ToString()); } else if (EObj.FColNm == "fModiDate") { DTObj.Add(EObj.FColNm, DateTime.Now.ToString()); } else if (EObj.FColNm == "fModifier") { DTObj.Add(EObj.FColNm, CurUsrName); } else if (EObj.FColNm == "fModifierID") { DTObj.Add(EObj.FColNm, CurUsrID); } else if (EObj.FColNm == "fCreatorID") { DTObj.Add(EObj.FColNm, IDObj1["建立人代号"].ToString()); } else if (EObj.FColNm == "fCreator") { DTObj.Add(EObj.FColNm, IDObj1["建立人姓名"].ToString()); } else { DTObj.Add(EObj.FColNm, EObj.FDefValue); } } } //3.循环完所有面板的字段后,生成更新对象列表 List_DTObj.Add(DTObj); //4.服务端根据接收到的对象列表更新数据库 //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj), SQL, OperType.AddSave); ComClient.SaveData1(Serializer.SerializeDTToXml <List <DTSerializer <string, object> > >(List_DTObj), SQL); ComClient.CommitTransaction(); } } } BtnName = BtnNam.Null; //重新刷新网格数据 Grip_Common2.DataSource = LoadData(UsrGroupClient.GetUsrGrpsToChCol("#Tmp_" + CurUsrID + "_" + DateTime.Now.Second.ToString(), "0", "")); } return(1); } else if (BtnName == BtnNam.Unapprove || BtnName == BtnNam.Approve || BtnName == BtnNam.Disable || BtnName == BtnNam.Enable) { //获取当前选择行的数据 IDictionary <string, object> IDObj1 = (IDictionary <string, object>)View_Common2.GetFocusedRow(); if (BtnName == BtnNam.Unapprove) { //根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(TabNam, FrmNam, OperType.UnApprove, PriKey + " ='" + IDObj1[ComClient.GetChColByEnCol(TabNam, PriKey)].ToString() + "'", "Panel4", CurUsrID, CurUsrName)); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } } else if (BtnName == BtnNam.Approve) { //根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(TabNam, FrmNam, OperType.Approve, PriKey + " ='" + IDObj1[ComClient.GetChColByEnCol(TabNam, PriKey)].ToString() + "'", "Panel4", CurUsrID, CurUsrName)); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } } else if (BtnName == BtnNam.Disable) { //根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(TabNam, FrmNam, OperType.Disable, PriKey + " ='" + IDObj1[ComClient.GetChColByEnCol(TabNam, PriKey)].ToString() + "'", "Panel4", "", "")); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } } else if (BtnName == BtnNam.Enable) { //根据表名和窗体实例名查询出更新表需要的关键信息 List_EObj = LoadData(ComClient.GetTabStrc(TabNam, FrmNam, OperType.Enable, PriKey + " ='" + IDObj1[ComClient.GetChColByEnCol(TabNam, PriKey)].ToString() + "'", "Panel4", "", "")); //获取执行SQL foreach (ExpandoObject EObj in List_EObj) { var IDObj = (IDictionary <string, object>)EObj; SQL = (string)IDObj["SQL"]; } } //ComClient.SaveData(Serializer.SerializeDTToXml<List<DTSerializer<string, object>>>(List_DTObj), SQL, OperType.UnApprove); ComClient.SaveData1("", SQL); //提交事务 ComClient.CommitTransaction(); BtnName = BtnNam.Null; //重新刷新网格数据 Grip_Common2.DataSource = LoadData(UsrGroupClient.GetUsrGrpsToChCol("#Tmp_" + CurUsrID + "_" + DateTime.Now.Second.ToString(), "0", "")); } else { Common.ShowMsg("用户组代号不允许重复!"); return(0); } } catch (Exception Ex) { //关闭当前SQL连接 ComClient.CloseSqlCon(); Common.ShowMsg(Ex.Message); } return(0); }
/// <summary> /// 过滤方案节点焦点改变事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TrList_FltSlt_FocusedNodeChanged(object sender, FocusedNodeChangedEventArgs e) { try { //将树节点切换成不可编辑模式 TrList_FltSlt.OptionsBehavior.Editable = false; SltEditNode = TrList_FltSlt.FocusedNode; System.Drawing.Point Point1 = new System.Drawing.Point(0, 4); string SltID = SltEditNode.GetValue("FSltID").ToString(); //1.根据过滤方案ID获取方案明细数据 List <ExpandoObject> List_EObj = Serializer.DeserializeXMLToEObject(ComClient.GetFltSltDtlBySltID(SltID)); if (SltID != "P01" && SltID != "S01") { //2.清空面板中的所有过滤控件 Pal_FlCtner.Controls.Clear(); } //3.依次读取过滤方案明细数据,根据读取到的数据设置过滤控件中每一个子控件的隐藏属性及控件的EditValue int i = 2; foreach (dynamic EObj in List_EObj) { UsrContr_Filter Filter = new UsrContr_Filter(AddType.Auto); Filter.Name = "UsrContr_Filter" + i.ToString(); Filter.Tag = i++; //初始化过滤控件 InitLkUp(Filter); string[] Names = { "LkUp_Brackets1", "SLkUp_ColNams", "LkUp_Cdt", "CBox_CdtValue1", "CBox_CdtValue2", "CBox_CdtValue3", "DEd_CdtValue3", "DEd_CdtValue5", "DEd_CdtValue6", "LkUp_Brackets2", "LkUp_Rlt" }; foreach (string name in Names) { //return; //查询出指定名称的控件 var Query = from Contr1 in Filter.Controls.Cast <Control>() where Contr1.Name == name select Contr1; Control Contr = Query.First <Control>(); if (Contr.Name == "LkUp_Brackets1") { //((LookUpEdit)Contr).Text = (string)EObj.FBrackets1Value; List <ExpandoObject> ListEObj = (List <ExpandoObject>)(((LookUpEdit)Contr).Properties.DataSource); var Qurey = from dynamic EObj1 in ListEObj where EObj1.FRemark == EObj.FBrackets1Value select EObj1; if (Qurey.Count <dynamic>() != 0) { dynamic EObj2 = Qurey.First <dynamic>(); ((LookUpEdit)Contr).EditValue = EObj2.FColNm; } } else if (Contr.Name == "SLkUp_ColNams") { List <ExpandoObject> ListEObj = (List <ExpandoObject>)(((SearchLookUpEdit)Contr).Properties.DataSource); var Qurey = from dynamic EObj1 in ListEObj where EObj1.FRemark == EObj.FColNamsValue select EObj1; if (Qurey.Count <dynamic>() != 0) { dynamic EObj2 = Qurey.First <dynamic>(); ((SearchLookUpEdit)Contr).EditValue = EObj2.FColNm; } } else if (Contr.Name == "LkUp_Cdt") { //((LookUpEdit)Contr).Text = (string)EObj.FCdt; List <ExpandoObject> ListEObj = (List <ExpandoObject>)(((LookUpEdit)Contr).Properties.DataSource); var Qurey = from dynamic EObj1 in ListEObj where EObj1.FRemark == EObj.FCdt select EObj1; if (Qurey.Count <dynamic>() != 0) { dynamic EObj2 = Qurey.First <dynamic>(); ((LookUpEdit)Contr).EditValue = EObj2.FColNm; } } else if (Contr.Name == "CBox_CdtValue1") { ((ComboBoxEdit)Contr).Text = (string)EObj.FCBoxCdtValue1; ((ComboBoxEdit)Contr).Visible = (string)EObj.FCBoxCdtValue1 == "null" ? false : true; } else if (Contr.Name == "CBox_CdtValue2") { ((ComboBoxEdit)Contr).Text = (string)EObj.FCBoxCdtValue2; ((ComboBoxEdit)Contr).Visible = (string)EObj.FCBoxCdtValue2 == "null" ? false : true; } else if (Contr.Name == "CBox_CdtValue3") { ((ComboBoxEdit)Contr).Text = (string)EObj.FCBoxCdtValue3; ((ComboBoxEdit)Contr).Visible = (string)EObj.FCBoxCdtValue3 == "null" ? false : true; } else if (Contr.Name == "DEd_CdtValue3") { ((DateEdit)Contr).Text = (string)EObj.FDedCdtValue3; ((DateEdit)Contr).Visible = (string)EObj.FDedCdtValue3 == "null" ? false : true; } else if (Contr.Name == "DEd_CdtValue5") { ((DateEdit)Contr).Text = (string)EObj.FDedCdtValue5; ((DateEdit)Contr).Visible = (string)EObj.FDedCdtValue5 == "null" ? false : true; } else if (Contr.Name == "DEd_CdtValue6") { ((DateEdit)Contr).Text = (string)EObj.FDedCdtValue6; ((DateEdit)Contr).Visible = (string)EObj.FDedCdtValue6 == "null" ? false : true; } else if (Contr.Name == "LkUp_Brackets2") { //((LookUpEdit)Contr).Text = (string)EObj.FBrackets2; List <ExpandoObject> ListEObj = (List <ExpandoObject>)(((LookUpEdit)Contr).Properties.DataSource); var Qurey = from dynamic EObj1 in ListEObj where EObj1.FRemark == EObj.FBrackets2 select EObj1; if (Qurey.Count <dynamic>() != 0) { dynamic EObj2 = Qurey.First <dynamic>(); ((LookUpEdit)Contr).EditValue = EObj2.FColNm; } } else if (Contr.Name == "LkUp_Rlt") { List <ExpandoObject> ListEObj = (List <ExpandoObject>)(((LookUpEdit)Contr).Properties.DataSource); var Qurey = from dynamic EObj1 in ListEObj where EObj1.FRemark == EObj.FRlt select EObj1; if (Qurey.Count <dynamic>() != 0) { dynamic EObj2 = Qurey.First <dynamic>(); ((LookUpEdit)Contr).EditValue = EObj2.FColNm; } //((LookUpEdit)Contr).Text ="或者"; Filter.addType = AddType.Manual; } } Pal_FlCtner.Controls.Add(Filter); if (Filter.Name != "UsrContr_Filter2") { Point1.Y = Point1.Y + 23; Filter.Location = Point1; } } } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }
//[Fact(Skip = "Skipped")] public void SendReceiveRaw() { Util.Log("SendReceiveRaw"); ComClient client = new ComClient(false); client.PortNumber = this.server.Port; client.ListenPortNumber = this.server.Port + 1; Connect(ref client); server.Server.BeaconStop(); //AddChannel bool boolCheck = false; bool byteCheck = false; bool shortCheck = false; bool intCheck = false; bool floatCheck = false; bool doubleCheck = false; bool stringCheck = false; bool classCheck = false; bool boolData = true; byte byteData = 246; short shortData = 361; int intData = 543; float floatData = 5.6f; double doubleData = 32.5; string stringData = "You are not human!"; TestClass testData = new TestClass(); testData.intData = 6; testData.floatData = 6.6f; testData.stringData = "Are you human?"; //Bool client.AddChannel(new DataChannel <bool>((short)ChannelId.BoolRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == boolData) { boolCheck = true; } }, checkMode)); //Byte client.AddChannel(new DataChannel <byte>((short)ChannelId.ByteRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == byteData) { byteCheck = true; } }, checkMode)); //Short client.AddChannel(new DataChannel <short>((short)ChannelId.ShortRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == shortData) { shortCheck = true; } }, checkMode)); //Int client.AddChannel(new DataChannel <int>((short)ChannelId.IntRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == intData) { intCheck = true; } }, checkMode)); //Float client.AddChannel(new DataChannel <float>((short)ChannelId.FloatRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == floatData) { floatCheck = true; } }, checkMode)); //Double client.AddChannel(new DataChannel <double>((short)ChannelId.DoubleRaw, QosType.Reliable, comp, enc, (node, data) => { Util.Log("double:" + data); if (data == doubleData) { doubleCheck = true; } }, checkMode)); //String client.AddChannel(new DataChannel <string>((short)ChannelId.StringRaw, QosType.Reliable, comp, enc, (node, data) => { if (data == stringData) { stringCheck = true; } }, checkMode)); //Class client.AddChannel(new DataChannel <TestClass>((short)ChannelId.ClassRaw, QosType.Reliable, comp, enc, (node, data) => { Util.Log("class:" + data); if ( data.intData == testData.intData && data.floatData == testData.floatData && data.stringData == testData.stringData ) { classCheck = true; } }, checkMode)); //Send client.Send((short)ChannelId.BoolRaw, boolData); client.Send((short)ChannelId.ByteRaw, byteData); client.Send((short)ChannelId.ShortRaw, shortData); client.Send((short)ChannelId.IntRaw, intData); client.Send((short)ChannelId.FloatRaw, floatData); client.Send((short)ChannelId.DoubleRaw, doubleData); client.Send((short)ChannelId.StringRaw, stringData); client.Send((short)ChannelId.ClassRaw, testData); Stopwatch sw = new Stopwatch(); sw.Reset(); sw.Start(); while (true) { if (boolCheck && byteCheck && shortCheck && intCheck && floatCheck && doubleCheck && stringCheck && classCheck ) { break; } else if (sw.Elapsed.Seconds >= 2225) { client.Close(); throw new TimeoutException(); } Task.Delay(100); } sw.Stop(); Disconnect(ref client); }
//[Fact(Skip = "Skipped")] public void StressTestUnreliable() { Util.Log("StressTestUnreliable"); ComClient client = new ComClient(false); client.PortNumber = this.server.Port; client.ListenPortNumber = this.server.Port + 1; client.BufferSize = 8192 * 10; Connect(ref client); server.Server.BeaconStop(); int recvTestNum = 0; int sendTestNum = 0; //AddChannel TestClass testData = new TestClass(); testData.intData = 6; testData.floatData = 6.6f; testData.stringData = "Are you human?"; //Byte //Class client.AddChannel(new DataChannel <TestClass>((short)ChannelId.ClassUnRel, QosType.Unreliable, comp, enc, (node, data) => { if ( data.intData == testData.intData && data.floatData == testData.floatData && data.stringData == testData.stringData ) { recvTestNum++; } }, checkMode)); Random random = new Random(); sendTestNum = random.Next(500, 600); Util.Log("sendTestNum:" + sendTestNum); //Send for (int i = 0; i < sendTestNum; i++) { client.Send((short)ChannelId.ClassUnRel, testData); } Stopwatch sw = new Stopwatch(); sw.Reset(); sw.Start(); while (true) { if (recvTestNum == sendTestNum) { break; } else if (sw.Elapsed.Seconds >= 10) { float percennt = (float)recvTestNum / (float)sendTestNum * 100.0f; Util.Log("percent:" + percennt); if (percennt < 80.0f) { client.Close(); throw new InvalidProgramException(); } break; } Task.Delay(100); } sw.Stop(); Disconnect(ref client); }
public PubSubClient(string ipaddr, string port, string userName) { comCli = new ComClient(ipaddr, port, userName); }
/// <summary> /// 加载事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmFilter_Load(object sender, EventArgs e) { try { if (CurOperType == OperType.InitFilter) { UsrContr_Filter2.CtrContainer = Pal_FlCtner; DataTransformer = new DataTransform(); InitLkUp(this.UsrContr_Filter2); //新建树菜单列 DevExpress.XtraTreeList.Columns.TreeListColumn Col_FSltID = new DevExpress.XtraTreeList.Columns.TreeListColumn(); Col_FSltID.Name = "FSltID"; Col_FSltID.FieldName = "FSltID"; Col_FSltID.Caption = "FSltID"; DevExpress.XtraTreeList.Columns.TreeListColumn Col_FParentID = new DevExpress.XtraTreeList.Columns.TreeListColumn(); Col_FParentID.Name = "FParentID"; Col_FParentID.Caption = "FParentID"; Col_FParentID.FieldName = "FParentID"; DevExpress.XtraTreeList.Columns.TreeListColumn Col_FSltName = new DevExpress.XtraTreeList.Columns.TreeListColumn(); Col_FSltName.Name = "FSltName"; Col_FSltName.Caption = "FSltName"; Col_FSltName.FieldName = "FSltName"; Col_FSltName.Visible = true; Col_FSltName.VisibleIndex = 2; DevExpress.XtraTreeList.Columns.TreeListColumn Col_FFrmName = new DevExpress.XtraTreeList.Columns.TreeListColumn(); Col_FFrmName.Name = "FFrmName"; Col_FFrmName.Caption = "FFrmName"; Col_FFrmName.FieldName = "FFrmName"; //将列添加到树菜单 TrList_FltSlt.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] { Col_FSltID, Col_FParentID, Col_FSltName, Col_FFrmName } ); TrList_FltSlt.KeyFieldName = "FSltID"; TrList_FltSlt.ParentFieldName = "FParentID"; TrList_FltSlt.OptionsView.ShowColumns = false; TrList_FltSlt.OptionsBehavior.Editable = false; //设置树菜单节点竖向边框不显示 TrList_FltSlt.OptionsView.ShowVertLines = false; //设置树菜单节点横向边框不显示 TrList_FltSlt.OptionsView.ShowHorzLines = false; //设置树菜单节点的字体大小 TrList_FltSlt.Appearance.Row.Font = new System.Drawing.Font("Tahoma", 10F); Pal_FltSlt.Controls.Add(TrList_FltSlt); //将过滤方案反序列化成Datatable TrList_FltSlt.DataSource = Serializer.DeserializeXMLToDT(ComClient.GetFltSlt(CurUsrID, FrmNam)); TrList_FltSlt.ExpandAll(); } } catch (Exception Ex) { Common.ShowMsg(Ex.Message); } }