且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

合并DataGridView控件的ColumnHeader单元格

更新时间:2023-02-04 21:12:55

^ ]是一种方法.

还有其他方法,如果您想尝试使用它们搜索 c#datagridview合并标头.
Here[^] is one way to do it.

There are other ways so if you want to try them search for c# datagridview merge headers.


put this script after the <form> tag inside the <body> tag. It really Works.In case it fails ,please let me know.
after implementing it please remember to Tick My Answer, and vote me. 


:-D


:-D

<script type="text/javascript" language="javascript">
       var myTable = document.getElementById('<%= GridView1.ClientID %>');
       if(myTable)
       {
           var rows = myTable.getElementsByTagName('tr');
           var numRows = rows.length;
           var numCols= rows[rows.length-1].getElementsByTagName('td').length;
         //for (var i = 0; i <(numRows); i++)    //to merge columns of all rows
           for (var i = 0; i <1; i++)            //to merge columns of 1st row only
           {
               var numColSpan=1;
               for (var j = 5; j <8; j++)
               {
                    if (numColSpan<=1)
                    {
                        var currentRow = myTable.getElementsByTagName('tr')[i];
                        var currentCell;
                        if(i==0)
                        {
                             // first row of table rendered by the browser for
                             // gridview contains header cells therefore we access <th>
                             currentCell= currentRow.getElementsByTagName('th')[j];  // the 1st column
                        }
                        else
                        {
                             currentCell= currentRow.getElementsByTagName('td')[j];  // the 1st column
                        }
                        var currentCellData = currentCell.childNodes[0].data;
                    }
                    if (j<numCols-1)
                    {
                       var cellToCheck;
                       // first row of table rendered by the browser for
                       // gridview contains header cells therefore we access <th>
                       if(i==0)
                       {
                             // first row of table rendered by the browser for
                             // gridview contains header cells therefore we access <th>
                           cellToCheck=currentRow.getElementsByTagName('th')[j+1] // the 1st column
                       }
                       else
                       {
                           cellToCheck=currentRow.getElementsByTagName('td')[j+1]
                       }
                       if (cellToCheck)
                        {
                               var nextCell = cellToCheck;
                               numColSpan += 1;
                               currentCell.colSpan = numColSpan;
                               currentCell.align="center";
                               nextCell.style.display = 'none';   //disappear the next cell
                               currentCell.style.background="green";
                               currentCell.innerHTML="Merged";
                        }
                     }
                }
            }
        }
 </script>