怎么防止下拉列表控件的EditvalueChanged事件进入死循环
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"怎么防止下拉列表控件的EditvalueChanged事件进入死循环",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么防止下拉列表控件的
千家信息网最后更新 2026年10月31日怎么防止下拉列表控件的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安全错误
数据库的锁怎样保障安全
猪兼强互联网科技
狮子座互联网科技有限公司
善班互联网科技有限公司
兼蜜互联网科技
互联网科技论坛
青海省互联网新科技
开启互联网科技时代小说
哈尔滨新华互联网科技学院
欧洲十大科技互联网公司
承德科技产业互联网发展
全球顶尖互联网科技公司
语蝶互联网科技有限公司
畅思互联网科技
用友工业互联网科技发展
互联网金融科技元年
小米互联网科技园入驻
广东工业互联网大赛深圳学泰科技
中国科技和美国互联网
安徽零酒互联网科技有限公司
第三届互联网大会安防黑科技
云南咖啡
博兴的互联网电子科技公司
互联网汽车科技小镇
湖南诚度互联网科技有限公司
互联网金融中的现代科技
河南猎农互联网科技有限公司
滨湖区互联网智能科技产品有哪些
互联网领先科技宣传片
扫呗互联网科技有限公司
深圳互联网科技园地址