Repeater多列分別合並單元格


GridView、Repeater合並單元格可以參考http://www.cnblogs.com/zhmore/archive/2009/04/22/1440979.html,但是原文例子是合並一列的單元格。
現在有2列需要分別合並單元格,如下所示,“類型”和“操作”當有相同的值時要分別合並:

可以在原來的代碼上稍做改動,前台代碼如下:

<asp:Repeater runat="server" ID="rptList">         
<HeaderTemplate>
   <table width="100%" border="1" cellpadding="4" cellspacing="0" bgcolor="#464646" style="border-collapse:collapse; padding:0; margin:0">  
       <tr bgcolor="#eeeeee">  
           <td>序號</td> 
           <td>類型</td>
           <td>操作</td>
           <td>編號</td>                                        
       </tr>   
</HeaderTemplate>                 
  <ItemTemplate>
   <tr bgcolor="#ffffff">                                   
           <td><%# Eval("rn") %></td>
           <td runat="server" id="td1"><%#Eval("Col1")%></td>
           <td runat="server" id="td2"><%#Eval("Col2")%></td>
           <td><%#Eval("Col3")%></td> 
           <td><%#Eval("Col4")%></td> 
       </tr>
  </ItemTemplate>   
  <FooterTemplate>
     </table>  
  </FooterTemplate>                       
</asp:Repeater> 

 后台代碼如下:

private void BindData()
{
    rptList.DataSource = null; //這里為數據源,省略...
    rptList.DataBind();  
    MergeCell("td1", "td2");
}
private void MergeCell(string tdIdName1, string tdIdName2)
{
    for (int i = rptList.Items.Count - 1; i > 0; i--)
    {
        MergeCellSet(tdIdName1, tdIdName2, i);
    }
}
private void MergeCellSet(string tdIdName1, string tdIdName2, int i)
{
    HtmlTableCell cellPrev = rptList.Items[i - 1].FindControl(tdIdName1) as HtmlTableCell;
    HtmlTableCell cell = rptList.Items[i].FindControl(tdIdName1) 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;

        //關鍵代碼,再判斷執行第2列的合並單元格方法
        if (tdIdName2 != "") MergeCellSet(tdIdName2, "", i);
    }
}         

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM