GridView 动态列上方添加相应的Combox等控件

Dev中的Gridview控件添加简单的动态列并不复杂,但是有时候需要在在动态列上添加对应的Combox

 1  gvList.BeginUpdate();
 2 if (gcList.DataSource != null)
 3 {
 4    (gcList.DataSource as DataTable).Clear();
 5 }
 6  gvList.Columns.Clear();
 7
 8 //DataTable 形式绑定数据源
 9 DataTable dt = new DataTable();
10                 dt.Columns.Add("PatternPartCD", typeof(string));
11                 dt.Columns.Add("PatternPartNm", typeof(string));
12                 dt.Columns.Add("Size", typeof(Decimal));
13                 dt.Columns.Add("TorlnceL", typeof(Decimal));
14                 dt.Columns.Add("TorlnceR", typeof(Decimal));
15
16                 //手动添加 Gridview列
17                 GridHelper.AddCol(gvList, _presenter._resourceService.GetResourceString("Code"), "PatternPartCD", "PatternPartCD", true, 1, 55, this._riCode);
18                 GridHelper.AddCol(gvList, "* " + _presenter._resourceService.GetResourceString("PatternPartName"), "PatternPartNm", "PatternPartNm", true, 2, 180, null);
19                 GridHelper.AddCol(gvList, _presenter._resourceService.GetResourceString("Standard") + _presenter._resourceService.GetResourceString("Size"), "Size", "Size", true                                     , 3, 70,  null);
20                 GridHelper.AddCol(gvList, _presenter._resourceService.GetResourceString("TorlnceL"), "TorlnceL", "TorlnceL", true, 4, 70,  null);
21                 GridHelper.AddCol(gvList, _presenter._resourceService.GetResourceString("TorlnceR"), "TorlnceR", "TorlnceR", true, 5, 70,  null);
22
23
24
25
26                 for (i = 0; i < StyleSizeInfo.Count; i++)
27                 {
28                     dt.Columns.Add(StyleSizeInfo[i].SizeCD, typeof(decimal));                                           GridHelper.AddCol(gvList, StyleSizeInfo[i].SizeNm, StyleSizeInfo[i].SizeCD, StyleSizeInfo[i].SizeCD, true, j, 60, txtEdit);
29                     gvList.Columns[j].DisplayFormat.FormatString = "N2";
30                     gvList.Columns[j].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
31                     gvList.Columns[j].Tag = "Tag";
32
33                     System.Windows.Forms.ComboBox cboSize = new System.Windows.Forms.ComboBox();
34
35                     cboSize.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
36                     cboSize.Enabled = true; cboSize.FormattingEnabled = true;
37                     cboSize.Location = new Point(462 + i * 60, 0);//重新定位控件的位置39                     cboSize.Name = "cboBrand" + j.ToString();
40                     cboSize.DataSource = dtoList;
41                     cboSize.DisplayMember = "SizeNm";
42                     cboSize.ValueMember = "SizeCD";
43                     this.panelbtn2.Controls.Add(cboSize);
44
45                 dt.Columns.Add("PlusTol", typeof(Decimal));
46                 dt.Columns.Add("MinusTol", typeof(Decimal));
47                 dt.Columns.Add("Measurement", typeof(string));
48
49                 GridHelper.AddCol(gvList, _presenter._resourceService.GetResourceString("PlusTol"), "PlusTol", "PlusTol", true, j, 70, null);
50                 GridHelper.AddCol(gvList, _presenter._resourceService.GetResourceString("MinusTol"), "MinusTol", "MinusTol", true, j + 1, 70, null);
51                 GridHelper.AddCol(gvList, "* " + _presenter._resourceService.GetResourceString("PatternSizeChkMethod"), "Measurement", "Measurement", true, j + 2, 550, null);

注意:

1.最好将添加的控件单独放到一个panel上,方便重新定位或者遍历所有的新添加的控件:

foreach (Control item in panel1.Controls)//
 {
   if (item is System.Windows.Forms.ComboBox)
   {
    (item as System.Windows.Forms.ComboBox).Name = "新名字";
   }
 }

2.如果绑定的是有数据源的控价且控价数据源相同时,需要重新Copy数据源,否则可能会导致添加的控件变得一致:

 1     public class Employee : ICloneable//添加Copy方法到类内
 2     {
 3         public string name { get; set; }
 4         public object Clone()
 5         {
 6             return this.MemberwiseClone();
 7         }
 8     }
 9
10 List<Employee >  EmployeeList = new List<Employee >
11
12 foreach (Employee dto in EmployeeList )
13  {
14     dtoList.Add(dto.Clone() as IF_StyleSizeInfo);
15  }

Clone 类

时间: 2024-10-06 16:08:15

GridView 动态列上方添加相应的Combox等控件的相关文章

web页面动态加载UserControl,并调用用户控件中的方法来初始化控件

1,HTML页 头部注册: <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/CeShiBu.ascx" TagPrefix="UserControl" TagName="CeShiBu"%> <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/KaiFaBu.ascx" TagPrefix=&quo

MyEclipse添加JS插件(Spket控件)

一.安装Spket 网上更新方式 1.插件首页:http://www.spket.com        2.插件名称:Spket IDE        3.更新连接(Update Site):http://www.agpad.com/update 更新安装方法: 1.[Help]-[Software Updates]-[Find and Install...] 2.[Search for new features to install] -> [Next] 3.[New Remote Site.

C# 如何向Excel添加、删除表单控件

在Excel中,添加的控件可以和单元格关联,我们可以操作控件来修改单元格的内容,在下面的文章中,将介绍在Excel中添加几种不同的表单控件的方法,包括: 添加文本框 单选按钮 复选框 组合框 使用工具:Free Spire.XLS for .NET 8.3 (社区版)PS:下载安装该组件后,注意在项目程序中添加引用Spire.XLS.dll(dll文件可在安装路径下的Bin文件夹中获取),如下图所示 代码示例: 插入Excel表单控件[C#] using Spire.Xls; using Spi

C#WinForm 显示选中行的第一列单元格的内容,datagridview控件

1 UI 2 code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11

scrollview添加手势 不影响子控件点击事件

给父视图添加手势,但是子视图的点击事件失效了,怎么办?我在写tableView 自定义cel中显示多张图片 可以左右滑动 我在cell里面放了一个collectionView, 点击tableViewCell 跳转到详情页 如果点的是collectionView里的第三张图片,则详情页直接滑到第三张 ,点击其他区域 从第一张开始. 当图片的少的时候 点击collectionView空白区域的时候,tableViewCell的点击代理方法不走,把collectionView的userInterac

C# 使用Epplus导出Excel [2]:导出动态列数据

上一篇导出excel,是导出已知固定列,有时候我们根本就不知道有几列.列名是什么,因此这些动态列,可以用Dictionary<string,string>接收. 1.实体Student上加上一个字段Dictionarys Student.cs public class Student { public String Name { get; set; } public String Code { get; set; } public Dictionary<string, string>

GridView控件RowDataBound事件中获取列字段值的几种途径 !!!

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onclick", "javascript:alert('当前ID为:" +DataBinder.Eval(e.Row.DataItem,"CID"

GridView 获取列字段的几种途径

GridView是ASP.NET中功能强大的数据显示控件,它的RowDataBound事件为我们提供了方便的控制行.列数据的途径. 要获取当前行的某个数据列,我在实践中总结有如下几种方法: 1. Cells[x].Txt. 从列单元格的文本值获取.这种方法简单高率,最为常用,但是功能单纯.此法存在几个缺点: (1)无法获取到设置了隐藏属性的数据列的值,所取到的值为“”(空). (2)只能获取在HTML中定义过的数据列,无法查询数据源中的当前数据行的所有字段列.一般情况下,通过HTML设置Grid

扩展GridView控件——为内容项添加拖放及分组功能

引言 相信大家对GridView都不陌生,是非常有用的控件,用于平铺有序的显示多个内容项.打开任何WinRT应用或者是微软合作商的网站,都会在APP中发现GridView的使用."Tiles"提供了一个简单易用,平铺方式来组织内容显示.Windows8的开始菜单是最典型的GridView 示例."开始菜单"显示了系统中安装的所有应用程序,而且支持重新排列. 本文源于我们项目的开发人员,他们想在项目中提供与GridView相同的用户体验,想要创建类GridView控件