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的列添加排序按钮

 

 
posted @ 2015-04-28 20:51  洛晨随风  阅读(307)  评论(0编辑  收藏  举报