提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2012-10-31 13:37:25.000|阅读 5968 次
概述:本文首先通过简单的例子介绍一下,在DevExpress GridControl控件中使用SearchLookUpEdit构建数据快速输入。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
本文首先通过简单的例子介绍一下,在DevExpress GridControl控件中使用SearchLookUpEdit构建数据快速输入。
1、 GridControl集成SearchLookUpEdit的效果展现
1)启动后默认效果
2)弹出窗体效果
3)选中数据后效果图
其实上面是一个测试的例子,具体的应用会比较复杂一点,不过操作过程差不多,我们都是在一个Cell里面嵌入一个可以选择(包括查询)的数据列表,从中选择我们需要的内容,然后可以在另外一个Cell中输入一些其他的信息,保存的时候,一并保存即可。
在开始介绍之前,我们要清楚,这个GridControl必须先绑定数据源(数据源可以为空),如果不绑定数据源,那么虽然可以弹出列表供选择,但是鼠标移开值就会丢失的问题,一开始不明白其中道理,搞了很久。
首先要为GridControl添加两个字段,设置好他们的显示Caption和FieldName即可,然后在我们需要弹出窗口的单元格对象中,选择它的ColumnEdit控件为SearchLookup控件即可,如下所示。
这个时候,它会生成一个repositoryItemSearchLookUpEdit1的控件,这个控件就是该单元格的内嵌编辑控件了,可以从中选择列表的值,我们设置这个列表的DisplayMember为Name(显示的字段内容),ValueMember为ID(保存的值字段),如下所示。
除了你要设置主窗体里面的GridControl运行添加列外,你还需要设置编辑控件里面的View中OpitonsView里面的NewItemRowPosition为Botton(默认为None),这一步很重要,否则无法出现一个新建的行给你录入数据的。
例子代码比较简单,主要是为了演示这种方式的使用,代码如下所示
DataTable dt = new DataTable(); private void Form1_Load(object sender, EventArgs e) { dt.Columns.Add("ID"); dt.Columns.Add("Name"); for (int i = 0; i < 100; i++) { DataRow row = dt.NewRow(); row["ID"] = i.ToString(); row["Name"] = (new Random()).NextDouble().ToString(); dt.Rows.Add(row); System.Threading.Thread.Sleep(1); } this.repositoryItemSearchLookUpEdit1.DataSource = dt; this.gridControl1.DataSource = dt.Clone(); } private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { if (e.Column.FieldName == "ID") { string id = e.Value.ToString(); DataRow[] dr = dt.Select(string.Format("ID = '{0}'", id)); if(dr != null && dr.Length > 0) { DataRow row = dr[0]; string name = row["Name"].ToString(); gridView1.SetRowCellValue(e.RowHandle, "Name", name); } } }
3、 GridControl集成SearchLookUpEdit的实际案例操作
一个实际的案例就是门诊的时候,医生用药的情况,除了选择其他内容外,主要的就是快速录入药品信息。我们平常去大一点 的医院看病,好像看到的多数操作都是这样。还有一种方式就是销售人员提供的报价单,从产品里面选择信息,然后修改下价格,这些场景都是很适合这样的操作的。下面是一个门诊的例子。
在实际应用中,我们在编辑一些历史数据的时候,不希望原来的记录被修改,但是可以增加新的记录,但是前面所有介绍的内容,没有能够解决这个问题,那么我们应该如何操作才能实现这个效果呢?
其实GridView对象里面有一个ShowingEditor的事件,用来判断是否显示单元格的编辑器的,这样我们对数据库已有记录进行控制,不让它在列表中显示编辑控件出来即可,具体代码如下所示。
this.gridView1.ShowingEditor += new CancelEventHandler(gridView1_ShowingEditor);//实际使用的代码 void gridView1_ShowingEditor(object sender, CancelEventArgs e) { object ID = this.gridView1.GetRowCellValue(this.gridView1.FocusedRowHandle, "ID"); if (ID != null && !string.IsNullOrEmpty(ID.ToString())) { e.Cancel = true; } }
在保持数据的时候,我们对历史数据就不用修改保持,只需要针对新增的内容即可,如何做到的呢?其实就是判定他的绑定值是否存在即可,如果有绑定值,那么就是历史的数据,没有就是新的,进行特殊操作即可,如下代码所示。
if (this.gridView1.RowCount > 0) { #region 提交用药记录明细 for (int i = 0; i < this.gridView1.RowCount; i++) { //根据ID来判断是否新增的用药记录 object ID = this.gridView1.GetRowCellValue(i, "ID"); if (ID == null || string.IsNullOrEmpty(ID.ToString())) { //......................... } } #endregion }
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:博客园面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢