C# Repeater数据绑定分组,合并单元格(只合并一列相同值)

 <asp:Repeater ID="rpList" runat="server">
            <ItemTemplate>
                <tr align="center">
                    <td runat="server" id="td1">
                        <%#Eval("typename")%>
                    </td>
                    <td>
                        <%#Eval("workname")%>
                    </td>
                    <td>
                        <%#Eval("number")%>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>

 #region 数据绑定
        /// <summary>
        /// 数据绑定
        /// </summary>
        private void DataInforBind()
        {
            ServiceWorkEntity model = new ServiceWorkEntity();
            model.Year = Convert.ToInt32(year);
            model.WorkType = worktype;
            model.Reviews = reviews;
            model.Month =  Convert.ToInt32(month);
            ProjectEntity project = new ProjectEntity();
            project.ProType = protype;
            DataSet ds = ServiceWorkBLL.StaByMonthGet(model, project);
            this.rpList.DataSource = ds.Tables[0].DefaultView;
            this.rpList.DataBind();
            MergeCell(rpList, "td1");

        }
        #endregion

        #region Repeater多列分别合并单元格
        /// <summary>
        /// 选择行
        /// </summary>
        /// <param name="tdName1"></param>
        /// <param name="tdName2"></param>
        private void MergeCell(Repeater repeater, string tdName1)
        {
            for (int i = repeater.Items.Count-1; i > 0; i--)
            {
                MergeCellSet(repeater, tdName1, i);
            }
        }

        /// <summary>
        /// 多列分别合并单元格
        /// </summary>
        /// <param name="tdName1"></param>
        /// <param name="tdName2"></param>
        /// <param name="i"></param>
        private void MergeCellSet(Repeater repeater, string tdName1, int i)
        {
            HtmlTableCell cellPrev = repeater.Items[i - 1].FindControl(tdName1) as HtmlTableCell;
            HtmlTableCell cell = repeater.Items[i].FindControl(tdName1) as HtmlTableCell;
            cell.RowSpan = (cell.RowSpan == -1) ? 1 : cell.RowSpan;
            cellPrev.RowSpan = (cellPrev.RowSpan == -1) ? 1 : cellPrev.RowSpan;
            if (cell.InnerText == cellPrev.InnerText)
            {
                cell.Visible = false;
                cellPrev.RowSpan += cell.RowSpan;
            }
        }
        #endregion

上一篇:KY58 Repeater


下一篇:CGCTF——单身二十年