asp.net gridview多行標題合併(通用)
效果圖
前臺程式碼
<asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="false"> <Columns> <asp:BoundField DataField ="NO" HeaderText ="No" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第一季度|1月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第一季度|2月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第一季度|3月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第二季度|4月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第二季度|5月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第二季度|6月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第三季度|7月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第三季度|8月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第三季度|9月" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|10月|計劃" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|10月|實際" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|11月|計劃" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|11月|實際" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|12月|計劃" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|12月|實際" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度|第四季度|合計" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="上半年|計劃" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="上半年|實際" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="上半年|達成率" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="下半年|計劃" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="下半年|實際" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="下半年|達成率" HeaderStyle-HorizontalAlign ="Center" /> <asp:BoundField DataField ="NO" HeaderText ="年度合計" HeaderStyle-HorizontalAlign ="Center" /> </Columns> </asp:GridView>
後臺程式碼
Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated If e.Row.RowType = DataControlRowType.Header Then Dim intLayerLevel As Integer = 0 Dim tcOld(e.Row.Cells.Count - 1) As TableCell e.Row.Cells.CopyTo(tcOld, 0) Dim intLength As Integer = 0 Dim strSplit As String = "|" '獲取最大層數 For i As Integer = 0 To e.Row.Cells.Count - 1 intLength = tcOld(i).Text.Split(strSplit).Length If intLength > intLayerLevel Then intLayerLevel = intLength End If Next '移除標題 e.Row.Cells.Clear() Dim tcHeader As New TableHeaderCell Dim intFlag As Integer = 0 '處理行 For intLevel As Integer = 1 To intLayerLevel For intOldCell As Integer = 0 To tcOld.Length - 1 '取得header的層級名 Dim arrHeader() As String = tcOld(intOldCell).Text.Split(strSplit) If arrHeader.Length = intLevel Then '層級的名稱等於當前層數時 intFlag = intFlag + 1 If intOldCell = tcOld.Length - 1 _ OrElse (tcOld(intOldCell + 1).Text.Split(strSplit).Length >= intLevel _ AndAlso arrHeader(intLevel - 1) <> tcOld(intOldCell + 1).Text.Split(strSplit)(intLevel - 1)) _ OrElse tcOld(intOldCell).Text <> tcOld(intOldCell + 1).Text Then tcHeader = New TableHeaderCell() tcHeader.ColumnSpan = intFlag '如果當前header的層數小於最大層數,則設定該cell的行合併值 If intLayerLevel > intLevel Then tcHeader.RowSpan = intLayerLevel - intLevel + 1 '定義表頭的所佔的行數 End If tcHeader.Text = arrHeader(intLevel - 1) '設定cell文字 tcHeader.CssClass = Me.GridView1.HeaderStyle.CssClass '設定cell樣式 e.Row.Cells.Add(tcHeader) '新增cell intFlag = 0 End If ElseIf arrHeader.Length > intLevel Then '如果層級的名稱大於當前層數時 intFlag = intFlag + 1 '原標題的列數最後一列 '原標題的層數小於當前層數 '當前cell的上級層級名不等於原標題的當前層級名 If intOldCell >= tcOld.Length - 1 _ OrElse tcOld(intOldCell).Text.Split(strSplit).Length < intLevel _ OrElse arrHeader(intLevel - 1) <> tcOld(intOldCell).Text.Split(strSplit)(intLevel - 1) Then tcHeader = New TableHeaderCell tcHeader.ColumnSpan = intFlag tcHeader.Text = arrHeader(intLevel - 1) tcHeader.CssClass = Me.GridView1.HeaderStyle.CssClass e.Row.Cells.Add(tcHeader) intFlag = 0 ElseIf tcOld(intOldCell).Text.Split(strSplit).Length <> tcOld(intOldCell + 1).Text.Split(strSplit).Length Then If (arrHeader.Length >= intLevel _ AndAlso tcOld(intOldCell + 1).Text.Split(strSplit).Length >= intLevel _ AndAlso arrHeader(intLevel - 1) <> tcOld(intOldCell + 1).Text.Split(strSplit)(intLevel - 1)) _ OrElse tcOld(intOldCell + 1).Text.Split(strSplit).Length < intLevel Then tcHeader = New TableHeaderCell tcHeader.ColumnSpan = intFlag tcHeader.Text = arrHeader(intLevel - 1) tcHeader.CssClass = Me.GridView1.HeaderStyle.CssClass e.Row.Cells.Add(tcHeader) intFlag = 0 End If ElseIf tcOld(intOldCell).Text.Split(strSplit).Length = tcOld(intOldCell + 1).Text.Split(strSplit).Length Then If arrHeader(intLevel - 1) <> tcOld(intOldCell + 1).Text.Split(strSplit)(intLevel - 1) Then tcHeader = New TableHeaderCell tcHeader.ColumnSpan = intFlag tcHeader.Text = arrHeader(intLevel - 1) tcHeader.CssClass = Me.GridView1.HeaderStyle.CssClass e.Row.Cells.Add(tcHeader) intFlag = 0 End If End If End If Next If intLevel < intLayerLevel Then If Not tcHeader Is Nothing Then tcHeader.Text = tcHeader.Text + "</tr><tr>" End If End If Next End If End Sub
相關推薦
asp.net gridview多行標題合併(通用)
效果圖 前臺程式碼 <asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="false"> <Columns>
asp.net GridView多行表頭的實現
方法一:多行表頭合併效果圖測試多行合併表頭表頭表頭1表頭2表頭3表頭1-1表頭2-1表頭2-2表頭3-1表頭3-2表頭3-3 1 protected void GridView1_RowCreated(object sender, GridViewRowEventA
ASP.NET中多行文字框
<asp:textbox id="txtWXMT" runat="server" Width="100%" Height="108px" TextMode="MultiLine"><
GRIDVIEW多行多列合併單元格(合併列)
左邊是原始資料的顯示,右邊是應用合併列之後的效果。 從圖中可以看到,二級指標有兩列,有的行中兩列的內容一樣,有的則不一樣,如果實現如右圖所示,看起來效果會更好一些。下面就著手實現這個功能,我的實現原理很簡單,就是遍歷GridView的行和遍歷行中的單元格,如果單元格的前一列和當前列的內容相同就合
ASP.NET GridView中文字內容無法換行(自動換行/正常換行)
最近做專案的時候,遇到這樣一個問題:我用GridView來顯示課程表,每個單元格的內容包括課程名、上課地點、教師姓名,然後我想讓它們分行顯示,效果如下圖: 可是呢,GridView太頑強了,不管我拼接字串時用“\r\n”還是"<br/>",結果都無濟於事,
ASP.NET Gridview 控制單元格換行及隱藏列
特別注意:設定單元格的寬度不起作用,二.控制整個Gridview的換行,在RowDataBound事件中加以下語句 gvDeliverySummary.Attributes.Add("style", "word-break:keep-all;word-wrap:normal");
ASP.NET GridView 後臺繫結行點選行觸發SelectedIndexChanged,頁面重新整理後,只有一頁的情況下,事件只觸發一次
如題,小弟剛接觸asp.net不久,所以有很多不懂,望高手們不吝賜教。 下面進入正題,後臺程式碼如下 <pre name="code" class="csharp"> protected void GridView1_RowDataBound(object se
asp.net GridView 在報表底部增加合計行
首先:在GridView 屬性設定中,ShowFooter 設為 true方法一:使用SQL查詢統計出合計值,在繫結GridView時讓其結果賦於一個DataTable(全域性變數),然後在RowDataBound事件中 if (e.Row.RowType == DataC
asp.net GridView 表格之選中行
asp.net 技術 行數據 event tar tree lin asc end 一、GridView 表格之選中行 asp.net選中行的功能最初以為只能通過屬性中AllowGenerateSelectButton(運行時是否自動生成選擇按鈕)來實現,需要點擊生成的選擇
asp.net GridView 表格之取消設計最初顯示的綁定列
col 會有 .com .net ges als 結果 oge false 新建 GridView後若手動添加設置列,會有最初的綁定列,如下所示,顯示無用的最後面的幾列,雖運行時不影響但在設計時感覺還是怪怪的,如何不顯示呢 這時只需要將屬性列中AutoGenerateCo
asp.net後臺多線程的使用
next .net 結束 bind ack sta pki mes system ======== 調用無參數的方法 ============ //創建線程對象 傳入 委托線程執行的方法 Thread ts = new Threa
ASP.NET Core 運行原理剖析1:初始化WebApp模版並運行
正式版 功能 option urn server ack reference 修改 tin ASP.NET Core 運行原理剖析1:初始化WebApp模版並運行 核心框架 ASP.NET Core APP 創建與運行 總結 之前兩篇文章簡析.NET Core
ASP.NET 基礎多文件上傳
filename req 操作 tex 多文件上傳 遍歷 httppost con get ////多圖上傳 [HttpPost] public string duo() { ///.net 多文件
ASP.NET webform多次提交表單問題
的人 事件 client form gin ron 遇到 提交按鈕 orm 最近幾天遇到一個頭疼的問題,項目采用的是webform開發,每個界面都有個提交按鈕,點擊多次提交按鈕導致提交按鈕的OnClick事件執行了多次, 每次OnClick裏面都有一些邏輯處理,執行了
ASP.NET提取多層嵌套json數據的方法
jar don ner blog 實例 prop tool 調用 class a 本文實例講述了ASP.NET利用第三方類庫Newtonsoft.Json提取多層嵌套json數據的方法,具體例子如下。 假設需要提取的json字符串如下: {"name":"lily","
ASP.NET MVC多語言 仿微軟網站效果
string ride oca https net .cn 流程 exp att 文章轉載自:https://blog.csdn.net/cooldiok/article/details/78313513 微軟作為ASP.NET的創造者,它對於官網的結構設計肯定有值
ASP.NET 實現多頁面合並一頁顯示
ssi 設置 form sdn 過程 使用 方式 顯示 用戶控件 目前業務有一個需求: 就是把多個網頁合並到一個頁面顯示, 在實現過程中我一般使用兩種方法: 利用母版頁設置導航欄, 定位到每個網頁; 利用用戶控件( .acsx 後綴的文件), 但是有個問題就是傳參比較麻煩
asp.net開啟多線程異步處理
span dsta load returns post conf clas div exception protected void Page_Load(object sender, EventArgs e) { if (!IsP
ASP.NET Core多環境配置文件問題
指定 它的 png ati shel 前言 命令 服務器 ctrl+c 前言 在我們開發的過程中,往往會有這幾個環境,Dev、QA、Pre和Pro。 當然不同的環境可能大家的叫法會有點不一樣。 最常遇到的問題,或許就是不同環境的配置文件問題! 一個環境一個配置文件是很常見
多行資料合併成一行
需求:在大資料平臺maxcompute上統計各個等級對應的人數,欄位大致如下 CREATE TABLE `XXXX` ( `requestid` char(32) DEFAULT NULL, `id` char(32) NOT NULL, `createtime` varchar