本帖最后由 woaini1xiaoxiong1 于 2010-09-24 23:30:04 编辑

解决方案 »

  1.   

    datagridview控件的时候字段选择姓名 ,性别 ,年龄 。就可以达到你说的效果 。不太清楚你说的分栏是否是其它的效果
      

  2.   

    这个应该不行吧,如果行的话那删除一条记录时是删哪条呢?这种效果是在到处到excel后在excel中设置的。要不你就用代码自己写一个显示样式
      

  3.   

    直接写sql不现实,最好是对查询后datatable进行处理,先将datatable拆分成2个,第一个要大于等于第2个,然后将第2个datatable的ColumnName改名,然后对两个datatable进行merge,就可以实现楼主要的效果,如果是分成n栏,那就把datatable拆分成n个            #region 初始数据
                DataTable dt1 = new DataTable();            DataColumn dcName = new DataColumn("Name", typeof(string));
                DataColumn dcSex =new DataColumn("Sex",typeof(string));            dt1.Columns.Add(dcName);
                dt1.Columns.Add(dcSex);            DataRow dr1 = dt1.NewRow();
                dr1[0] = "zhang";
                dr1[1] = "male";
                dt1.Rows.Add(dr1);            DataRow dr2 = dt1.NewRow();
                dr2[0] = "wang";
                dr2[1] = "female";
                dt1.Rows.Add(dr2);            DataRow dr3 = dt1.NewRow();
                dr3[0] = "li";
                dr3[1] = "male";
                dt1.Rows.Add(dr3);            DataRow dr4 = dt1.NewRow();
                dr4[0] = "zhao";
                dr4[1] = "male";
                dt1.Rows.Add(dr4);            DataRow dr5 = dt1.NewRow();
                dr5[0] = "liu";
                dr5[1] = "female";
                dt1.Rows.Add(dr5);            dataGridView1.DataSource = dt1;            #endregion            // 存放第一组数据的datatable
                DataTable dt11 = dt1.Clone();
                // 为了merge需要,添加一个主键
                DataColumn dc11 = new DataColumn("No.", typeof(int));
                dt11.Columns.Add(dc11);
                dt11.PrimaryKey = new DataColumn[] { dc11 };            // 存放第二组数据的datatable
                DataTable dt12 = dt1.Clone();
                // 为了merge需要进行改名,这里是自动绑定,因此datagridview中显示的是DataTable的列名,实际使用时datagridview列名可以不同于datatable列名
                dt12.Columns[0].ColumnName = "Name1";
                dt12.Columns[1].ColumnName = "Sex1";
                // 为了merge需要,添加一个主键列
                DataColumn dc12 = new DataColumn("No.", typeof(int));
                dt12.Columns.Add(dc12);
                dt12.PrimaryKey = new DataColumn[] { dc12 };
                // 拆分datatable
                for (int i = 0; i < dt1.Rows.Count; i++)
                {
                    if (i % 2 == 0)
                    {
                        DataRow dr = dt11.NewRow();
                        dr["Name"] = dt1.Rows[i]["Name"];
                        dr["Sex"] = dt1.Rows[i]["Sex"];
                        dr["No."] = dt11.Rows.Count;
                        dt11.Rows.Add(dr);
                    }
                    if (i % 2 == 1)
                    {
                        DataRow dr = dt12.NewRow();
                        dr["Name1"] = dt1.Rows[i]["Name"];
                        dr["Sex1"] = dt1.Rows[i]["Sex"];
                        dr["No."] = dt12.Rows.Count;
                        dt12.Rows.Add(dr);
                    }            }            // merge datatable
                dt11.Merge(dt12,false);            // merge后结果
                dataGridView2.DataSource = dt11;
      

  4.   

    如果直接用sql查询出2个带序号的结果集,直接进行merge会更方便,不过要保证第一个结果集>=第2个结果集
      

  5.   

    还是在数据库查询时对数据“分栏”,用SQL 处理比较好,前台DataGridView把列设好就行。