我从数据库xb中的表NorTable中绑定数据到GridView控间中,代码如下protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("server=local;uid=sa;pwd=111;database=xb");
con.Open();
//实例化SqlDataAdapter对象
SqlDataAdapter da = new SqlDataAdapter("select * from NorTable", con);
//实例化数据集DataSet
DataSet ds = new DataSet();
da.Fill(ds, "NorTable");
gvBookTaxis.DataSource = ds.Tables[0].DefaultView;
gvBookTaxis.DataBind();
GroupRows(gvBookTaxis, 0);
}//GroupRows方法是用来合并GridView控间中第一列数据中相同的数据
 public static void GroupRows(GridView GridView1, int cellNum)
    {
        int i = 0;
        int rowSpanNum = 1;
        while(i<GridView1.Rows.Count-1)
        {
          GridViewRow gvr =GridView1.Rows[i];
          for (++i; i < GridView1.Rows.Count;i++ )
          {
              GridViewRow gvrNext=GridView1.Rows[i];
              if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
              {
                  gvrNext.Cells[cellNum].Visible = false;
                  rowSpanNum++;
              }
              else
              {
                  gvr.Cells[cellNum].RowSpan = rowSpanNum;
                  rowSpanNum = 1;
                  break;
              }
              if(i==GridView1.Rows.Count-1)
              {
                  gvr.Cells[cellNum].RowSpan = rowSpanNum;
              }
          }
          
        }
}
页面设计代码如下
<asp:GridView ID="gvBookTaxis" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None"
                        PageSize="5" Width="815px">
                        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                        <Columns>
                            <asp:HyperLinkField DataNavigateUrlFields="Area" DataTextField="Area" HeaderText="地区" />
                            <asp:BoundField DataField="Time" HeaderText="时段" />
                            <asp:BoundField DataField="ConStr" HeaderText="内容" />
                        </Columns>
                        <SelectedRowStyle BackColor="#D1DDF1" ForeColor="#333333" Font-Bold="True" />
                        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                        <HeaderStyle BackColor="#BACEEB" Font-Bold="True" ForeColor="White" />
                        <AlternatingRowStyle BackColor="White" />
                        <RowStyle BackColor="#EFF3FB" />
                        <EditRowStyle BackColor="#2461BF" />
                    </asp:GridView>
我的数据表NorTable中的数据为
地区 时段 内容
北京  10  电视
北京  11  广播
重庆  12 报纸
重庆  13 网络
......
我想实现绑定出来后的效果为地区那一列相同的内容只显示一个,变为
地区 时段 内容
北京  10  电视
      11  广播
重庆  12 报纸
      13 网络
.....
请问我以上代码哪里有问题了,绑定出来的结果是
地区 时段 内容
      10  电视
北京  11  广播
      12 报纸
      13 网络
.....

解决方案 »

  1.   

    一下试试:
        string temp = "";
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (e.Row.Cells[0].Text == temp)
                {
                    e.Row.Cells[0].Text = "";
                }
                else
                    temp = e.Row.Cells[0].Text;        }
        }