怎么防止下拉列表控件的EditvalueChanged事件进入死循环
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容主要讲解"怎么防止下拉列表控件的EditvalueChanged事件进入死循环",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么防止下拉列表控件的
千家信息网最后更新 2025年12月01日怎么防止下拉列表控件的EditvalueChanged事件进入死循环
本篇内容主要讲解"怎么防止下拉列表控件的EditvalueChanged事件进入死循环",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么防止下拉列表控件的EditvalueChanged事件进入死循环"吧!
当 下拉列表控件选中后判定另一个为空,return之前需要将该下拉列表清空,就又会触发Changed事件,解决方案就是将空值的判断放置最外层,代码如下:
private void gluCOATemplate_EditValueChanged(object sender, EventArgs e) { try { if (gluCOATemplate.Text != "") { string sCoaId = gluCOATemplate.Text; string sBacthId = txtLotID.Text; if (txtLotID.Text == "") { CommonFunction.ShowMsgBox("检查批号不能为空"); InitgdvCoaItem(); gluCOATemplate.Text = ""; txtLotID.Focus(); return; } if (gluCOATemplate.Text == "") { CommonFunction.ShowMsgBox("请选择模板ID"); gluCOATemplate.Focus(); return; } if (txtLotID.Text != "" && sCoaId != "") { DataTable dt = new DataTable(); dt = QCMLIST.QCM_View_COA_Detail(sCoaId, sBacthId); if (dt != null) { udcGVNewDelCtrl1.RecordCount = dt.Rows.Count; //DevGridControlHelper.BindData(gdcCOAItem, dt); DevGridControlHelper.BindData(gdcCOAItem, dt, new int[] { 1, 1, 1, 1, 1, 1 }); } else { InitgdvCoaItem(); } } } } catch (Exception ex) { CommonFunction.ShowMsgBox(ex.Message); return; } }===============
防止添加的数据主键冲突:
一开始没有主键就取查到的最大值+1,
int iSeq = InTag.coa_list[i].item_seq; if (iSeq == 0)//传入的Seq为空(0)时,取数据库中最大的+1,否则直接保存 { List uQcmcoaitemlist = ctx.UQcmcoaitem.Where(t => t.PkgNoticeNo == sPkgId && t.Factory == sFactory).OrderByDescending(t=>t.ItemSeq).ToList(); if (uQcmcoaitemlist != null) { iSeq = uQcmcoaitemlist[0].ItemSeq + 1; } else { iSeq = 1; } } UQcmcoaitem uQcmcoaItem = new UQcmcoaitem { PkgNoticeNo = sPkgId, Factory = sFactory, ItemSeq = iSeq, TestingResult =InTag.coa_list[i].testing_result, TestingItem = InTag.coa_list[i].testing_item, TestingSpec = InTag.coa_list[i].testing_specification, TestingMethod = InTag.coa_list[i].testing_method, Dimens = InTag.coa_list[i].dimens, CreateTime = DBGV._dbc.DB_GetSysTime(), CreateUserId = InTag._cmn_in._user_id }; ctx.UQcmcoaitem.Add(uQcmcoaItem); 但是当添加多条Seq=0的数据时,从数据库查出的最大值+1就会使得要添加的这几天数据的主键冲突,因为事务还没提交,Seq都是Max+1
解决方法:在循环外面加一个int变量(count=0),每次Max+1后,再加上count:
int count = 0;for (int i = 0; i < InTag.coa_list.Length; i++){ if (InTag.coa_list[i].step == 'I') { int iSeq = InTag.coa_list[i].item_seq; if (iSeq == 0) { List uQcmcoaitemlist = ctx.UQcmcoaitem.Where(t => t.PkgNoticeNo == sPkgId && t.Factory == sFactory).OrderByDescending(t=>t.ItemSeq).ToList(); if (uQcmcoaitemlist != null) { iSeq = uQcmcoaitemlist[0].ItemSeq + 1+count; count++; } else { iSeq = 1; } } UQcmcoaitem uQcmcoaItem = new UQcmcoaitem { PkgNoticeNo = sPkgId, Factory = sFactory, ItemSeq = iSeq, TestingResult =InTag.coa_list[i].testing_result, TestingItem = InTag.coa_list[i].testing_item, TestingSpec = InTag.coa_list[i].testing_specification, TestingMethod = InTag.coa_list[i].testing_method, Dimens = InTag.coa_list[i].dimens, CreateTime = DBGV._dbc.DB_GetSysTime(), CreateUserId = InTag._cmn_in._user_id }; ctx.UQcmcoaitem.Add(uQcmcoaItem); } else { sMsgCode = "QCM-0004"; return GlobalConstant.FAIL; } } ctx.SaveChanges(); transaction.Commit(); GridLookUpEdit下拉列表的高度设置:
将properties中的AutoHeight设置为false,再设置size的值
到此,相信大家对"怎么防止下拉列表控件的EditvalueChanged事件进入死循环"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
下拉
数据
事件
控件
循环
最大
内容
数据库
方法
最大值
冲突
学习
实用
更深
事务
代码
兴趣
变量
外层
多条
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
英国大学网络安全硕士专业
数据库怎么防止注入
局域网设备怎么接入远程服务器
落实保障网络安全责任
萤石云服务器登录密码是多少
陌羽软件开发
服务器虚拟空间管理
安徽机架式服务器报价
数据库 财务
数据库备份是什么意思
软件开发justc
vf 列 填充相同数据库
中石油的网络安全
国家网络安全法什么时间施行
刷app数据库
网络安全感后语
服务器检查表
军工领域网络安全
定制化服务器供应价格
vb 如何使用数据库连接
新乡两年制计算机网络技术专业
网络安全保险发展现状
网络安全报告会心得体会
自己的服务器不备案吗
网络安全主题创意绘画一等奖
数据库的分离附加和收缩
数据库设计第三范式
哪些服务器CPU适合个人电脑
在数据库表中修改数据
卫通服务器