提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:周思宇|2023-05-22 10:17:39.027|阅读 79 次
概述:网格是Telerik UI for WinForms中很常用的数据组件,本文介绍如何使用未绑定模式填充RadGridView数据,欢迎下载组件体验!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件,所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。
Telerik UI for WinForms组件为可视化任何类型的数据提供了非常丰富的UI控件,其中RadGridView是最常用的数据组件。在上文中(点击这里回顾>>),我们主要介绍了如何添加层次结构中的多个子选项卡、嵌套多级层次结构等,本文继续介绍如何使用未绑定模式填充RadGridView数据。
Telerik_KendoUI产品技术交流群:726377843 欢迎一起进群讨论
在不同的场景中,开发人员不希望将源集合直接映射到网格控件。在这种情况下,使用非绑定模式填充RadGridView数据是合适的。
当使用非绑定模式时,在Telerik UI for WinForms中的RadGridView支持根据定义的列以编程方式添加行。因此,可以为每个单元格指定一个值并存储合适的数据类型。
根据要存储的数据类型,RadGridView提供了不同的数据列。
在设计器中选择RadGridView控件后,点击右上角的小箭头打开智能标签:
列浏览按钮打开 GridViewDataColumn 集合编辑器
使用它,您可以添加特定场景所需的列类型。添加完列后,单击OK按钮,网格将被来自集合编辑器的列填充:
我们将从定义用于管理日期时间、十进制、字符串和图像值的列开始。为此,我们将使用GridViewDateTimeColumn, GridViewDecimalColumn, GridViewTextBoxColumn, GridViewImageColumn和GridViewBrowseColumn。然后,将添加几行并填充适当的数据。
浏览列将用于将图像上传到相应的列。当在浏览单元中选择了一个有效的文件路径时,整个程序逻辑在CellValueChange事件中执行:
public UnboundForm() { InitializeComponent(); this.radGridView1.TableElement.RowHeight = 40; this.radGridView1.AutoSizeRows = true; GridViewDateTimeColumn dateColumn = new GridViewDateTimeColumn("OrderDate"); dateColumn.FormatString = "{0:dd/MM/yyyy}"; //format the cell's text dateColumn.Format = DateTimePickerFormat.Custom; dateColumn.CustomFormat = "dd/MM/yyyy"; //format the cell's editor dateColumn.Width = 200; this.radGridView1.Columns.Add(dateColumn); GridViewDecimalColumn priceColumn = new GridViewDecimalColumn("Price"); priceColumn.HeaderText = "Unit Price"; priceColumn.DecimalPlaces = 2; priceColumn.FormatString = "{0:C}"; priceColumn.FormatInfo = new System.Globalization.CultureInfo("en-GB"); priceColumn.Width = 100; radGridView1.MasterTemplate.Columns.Add(priceColumn); GridViewTextBoxColumn textBoxColumn = new GridViewTextBoxColumn("ProductName"); textBoxColumn.MaxLength = 50; textBoxColumn.Width = 150; textBoxColumn.TextAlignment = ContentAlignment.MiddleCenter; radGridView1.MasterTemplate.Columns.Add(textBoxColumn); GridViewImageColumn imageColumn = new GridViewImageColumn("Photo"); imageColumn.Width = 100; imageColumn.ImageLayout = ImageLayout.Zoom; radGridView1.MasterTemplate.Columns.Add(imageColumn); GridViewBrowseColumn browseColumn = new GridViewBrowseColumn("Upload photo"); browseColumn.Width = 300; this.radGridView1.Columns.Add(browseColumn); this.radGridView1.CellValueChanged += RadGridView1_CellValueChanged; this.radGridView1.ValueChanged += RadGridView1_ValueChanged; this.radGridView1.Rows.Add(new DateTime(2023, 3,20),20.49, "Banana"); this.radGridView1.TableElement.RowHeight = 50; } private void RadGridView1_ValueChanged(object sender, EventArgs e) { GridBrowseEditor browseEditor = sender as GridBrowseEditor; if (browseEditor!=null && browseEditor.Value!=null) { this.radGridView1.EndEdit(); //commit the value directly after selecting a new image file } } private void RadGridView1_CellValueChanged(object sender, GridViewCellEventArgs e) { if (e.Column.Name == "Upload photo" && e.Value != null) { e.Row.Cells["Photo"].Value = Image.FromFile(e.Value.ToString()); } }
上面的示例只向网格中添加一行。如果我们增加添加的行数,例如100行,我们会注意到在执行添加操作时出现一些延迟。添加每行会触发视觉元素的刷新操作。因此,添加的行越多,执行的刷新操作就越多。
重要的是:BeginUpdate和EndUpdate结构挂起所有的可视化更新,并允许你在向RadGridView添加大量行时提高性能。行集合:
private void radButton1_Click(object sender, EventArgs e) { AddRows(this.radCheckBox1.Checked); } private void AddRows(bool isSuspended) { Stopwatch sw = new Stopwatch(); sw.Start(); int n = 100; if (isSuspended) { this.radGridView1.BeginUpdate(); } int startIndex = this.radGridView1.Rows.Count; for (int i = startIndex; i < startIndex+ n; i++) { this.radGridView1.Rows.Add(DateTime.Now.AddHours(i), i * 0.25, i + ". " + Guid.NewGuid()); ; } if (isSuspended) { this.radGridView1.EndUpdate(); } sw.Stop(); RadMessageBox.Show(this.radGridView1,"Adding " + n + " rows took " + sw.ElapsedMilliseconds.ToString() + " milliseconds"); }
下面的动画以更好的方式说明了两者的区别:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
拥有适用Windows Forms的110+个酷炫UI控件。
Telerik DevCraft最完整的.NET、Web和Mobile开发工具,智能制造首选控件。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢