datatable把一个LIst的数据放入两个colum防止窜行的做法
DataColumn objectOne = new DataColumn("objectOne", typeof(object)); dt.Columns.Add(objectOne); //更改databatle列的类型的方法
List<string> item = new List<string>(); item.Add("第一列数据"); item.Add("第二列数据"); item.Add("第三列数据"); item.Add("第四列数据"); item.Add("第五列数据"); item.Add("第六列数据"); item.Add("第七列数据"); item.Add("第八列数据"); item.Add("第九列数据"); DataTable dt = new DataTable(); dt.Columns.Add("名称一"); dt.Columns.Add("名称二"); DataRow dr = dt.NewRow() ; for (int i = 0; i < item.Count; i+=2) { //如果这里不每次实例化就会每一次循环的数据覆盖上一次的 dr = dt.NewRow(); //写到指定的列上 dr["名称一"] = item[i]; //判断如果是奇数的话,最后一列不赋值 if((i+1)<item.Count) { dr["名称二"] = item[i + 1]; } dt.Rows.Add(dr); } //最后绑定到datagridview上成为数据源就OK了 this.dgvShow.DataSource = dt;
cells里面放置(for和foreach两种情况)
int i =0 foreach (AMDatumCategory datumCategory in this.spellCodeDatumCategoryMap[key]) { if (i % 2 == 0) { DataRow dr = dt.NewRow(); dr["IdOne"] = datumCategory.DatumCategoryId; dr["名称一"] = datumCategory.Name; dt.Rows.Add(dr); } else { dt.Rows[(i - 1)/2]["IdTow"] = datumCategory.DatumCategoryId; dt.Rows[(i - 1)/2]["名称二"] = datumCategory.Name; } i++; }
当i=3的时候,实际上要往dt的第2行添加数据,也就是dt.Rows[1]
dt的最后一行的行号,是当前i-1除以2
dt = new DataTable(); dt.Columns.Add("IdOne"); dt.Columns.Add("名称一"); dt.Columns.Add(" "); dt.Columns.Add("IdTow"); dt.Columns.Add("名称二"); for (int i = 0; i < lstCategory.Count; i++) { DataRow dr = dt.NewRow(); dr["IdOne"] = lstCategory[i].DatumCategoryId; dr["名称一"] = lstCategory[i].Name; i++; if (i < lstCategory.Count) { dr["IdTow"] = lstCategory[i].DatumCategoryId; dr["名称二"] = lstCategory[i].Name; } dt.Rows.Add(dr); }
for (int i = 0; i < this.dgvCategoryDatum.Columns.Count; i++) { this.dgvCategoryDatum.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; } //禁止对dgvCategoryDatum的列添加排序按钮
积累小的知识,才能成就大的智慧,希望网上少一些复制多一些原创有用的答案