C#中DataGridView的单元格合并问题
本人初学编程,没有经验。想了解一下,C# Windows Form应用程序下的一个问题。DataGridView中合并相同内容的单元格,也就是说,相同的项合并为一条记录显示在一个单元格内。或者,像Excel中“合并单元格”的功能一样,先选定要合并的单元格,然后在添加一个ButtonClick事件去执行操作。
------解决方案--------------------可以用数据库进行实现,就是用SQL语句然后再显示出来。其它的不懂,关注中
------解决方案--------------------效果图:  
后台代码:
public partial class _Default : System.Web.UI.Page  
{
   SqlConnection sqlcon;
   SqlCommand sqlcom;
   string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa";
   protected void Page_Load(object sender, EventArgs e)
   {
       if (!IsPostBack)
       {
           bind();          
       }
   }
   protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
   {
       GridView1.EditIndex = e.NewEditIndex;
       bind();
   }
   protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
   {
       sqlcon = new SqlConnection(strCon);
       string sqlstr = "update 飞狐工作室 set 姓名='"
           + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',家庭住址='"
           + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where 身份证号码='"  
           + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
       sqlcom=new SqlCommand(sqlstr,sqlcon);
       sqlcon.Open();
       sqlcom.ExecuteNonQuery();
       sqlcon.Close();
       GridView1.EditIndex = -1;
       bind();
   }
   protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
   {
       GridView1.EditIndex = -1;
       bind();
   }
   public void bind()
   {
       string sqlstr = "select top 10 * from 飞狐工作室";
       sqlcon = new SqlConnection(strCon);
       SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
       DataSet myds = new DataSet();
       sqlcon.Open();
       myda.Fill(myds, "飞狐工作室");
       GridView1.DataSource = myds;
       GridView1.DataKeyNames = new string[] { "身份证号码" };
       GridView1.DataBind();
       sqlcon.Close();
   }
//这里就是解决方案
   protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
   {
       switch (e.Row.RowType)
       {
           case DataControlRowType.Header:
               //第一行表头
               TableCellCollection tcHeader = e.Row.Cells;
               tcHeader.Clear();
               tcHeader.Add(new TableHeaderCell());
               tcHeader[0].Attributes.Add("rowspan", "3"); //跨Row
               tcHeader[0].Attributes.Add("bgcolor", "white");
               tcHeader[0].Text = "";
               tcHeader.Add(new TableHeaderCell());
               //tcHeader[1].Attributes.Add("bgcolor", "Red");
               tcHeader[1].Attributes.Add("colspan", "6"); //跨Column
               tcHeader[1].Text = "全部信息</th></tr><tr>";
               //第二行表头
               tcHeader.Add(new TableHeaderCell());
               tcHeader[2].Attributes.Add("bgcolor", "DarkSeaGreen");
               tcHeader[2].Text = "身份证号码";
               tcHeader.Add(new TableHeaderCell());
               tcHeader[3].Attributes.Add("bgcolor", "LightSteelBlue");
               tcHeader[3].Attributes.Add("colspan", "2");
               tcHeader[3].Text = "基本信息";
               tcHeader.Add(new TableHeaderCell());
               tcHeader[4].Attribute