2012.5.2 学习记录:表头合并&单元格合并

其实代码本来是多表头合并的,这里只做了一层~ 哦哈哈

==================================================================== 

前台页面代码

ExpandedBlockStart.gif 前台
<%@ Page Language= " C# " MasterPageFile= " ~/Master/DefaultPage.master " AutoEventWireup= " true " CodeFile= " PerformanceIndicator.aspx.cs " Inherits= " PerformanceWarning_PerformanceIndicator " Title= " 无标题页 " %>

<%@ Register Assembly= " RadAjax.Net2 " Namespace= " Telerik.WebControls " TagPrefix= " radA " %>
<%@ Register Assembly= " RadGrid.Net2 " Namespace= " Telerik.WebControls " TagPrefix= " radG " %>
<%@ Register TagPrefix= " radW " Namespace= " Telerik.WebControls " Assembly= " RadWindow.Net2 " %>  
<%@ Register TagPrefix= " radCln " Namespace= " Telerik.WebControls " Assembly= " RadCalendar.NET2 " %> 
 
<asp:Content ID= " Content1 " ContentPlaceHolderID= " ContentPlaceHolder1 " Runat= " Server "
 
    <radW:RadWindowManager ID= " Singleton " runat= " server " ClientCallBackFunction= " CallBackFunction "
        OnClientClose= " OnClientClose " OnClientShow= " OnClientShow ">
        <Windows>
            <radW:RadWindow ID= " DialogWindow2 " runat= " server " Height= " 400px " Modal= " true " Width= " 740px " />
        </Windows>
    </radW:RadWindowManager>
    <radA:RadAjaxManager ID= " RadAjaxManager1 " runat= " server ">
        <AjaxSettings>
        </AjaxSettings>
    </radA:RadAjaxManager>
    
     <table border= " 0 " >
     <tr valign= " top ">
        <td valign= " middle " >
            考核起止日期:</td>  
        <td > <radCln:RadDatePicker ID= " txtMinDate " runat= " server "  AutoPostBack= " false " >
                                    <DateInput DateFormat= " D " ReadOnly= " true ">
                                    </DateInput><DatePopupButton Title= " 点击后弹出日期选择框 "></DatePopupButton>
                                </radCln:RadDatePicker></td> 
        <td valign= " middle " > &nbsp; - &nbsp;</td>  
        <td > <radCln:RadDatePicker ID= " txtMaxDate " runat= " server "  AutoPostBack= " false ">
                                    <DateInput DateFormat= " D " ReadOnly= " true ">
                                    </DateInput><DatePopupButton Title= " 点击后弹出日期选择框 "></DatePopupButton>
                                </radCln:RadDatePicker> </td> 
        <td valign= " middle " >  
        <asp:Button ID= " btnQuery " runat= " server " SkinID= " SearchBtn "  OnClick= " btnQuery_Click " >
                </asp:Button>
        </td>
     </tr>
     </table> <br />
     <div style= " text-align: left "> <strong>查询列表:</strong></div>
     <radG:RadGrid ID= " rgData " runat= " server " AllowPaging= " false " AllowMultiRowSelection= " True "
        Width= " 100% " AutoGenerateColumns= " false " EnableAJAX= " false " GridLines= " None "
        ShowStatusBar= " False " AllowCustomPaging= " False " PageSize= " 15 " OnNeedDataSource= " rgData_NeedDataSource "
        OnItemDataBound= " rgData_ItemDataBound " OnItemCreated= " rgData_OnItemCreate ">
        <ClientSettings ReorderColumnsOnClient= " True " AllowColumnsReorder= " False ">
            <Selecting AllowRowSelect= " True " />
            <Scrolling UseStaticHeaders= " True " />
            <Resizing EnableRealTimeResize= " True " />
            <ClientMessages DragToResize= " 调整大小 " DropHereToReorder= " 移动列到此位置 " DragToGroupOrReorder= " 按住不放移动列 ">
            </ClientMessages>
        </ClientSettings>
        <HeaderStyle HorizontalAlign= " Center " />
        <ItemStyle HorizontalAlign= " Center " />
        <AlternatingItemStyle HorizontalAlign= " Center " />
        <MasterTableView NoMasterRecordsText= " 没有数据. " DataKeyNames= " JXZBMS " AllowSorting= " False "
            AllowMultiColumnSorting= " True " Width= " 100% ">
            <Columns> 
                
            </Columns>
            <PagerStyle Mode= " NextPrevAndNumeric " PagerTextFormat= " {4} &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (第 {0} 页 / 共 {1} 页, 第 {2} 条 至 第 {3} 条, 总共 {5} 条) "
                HorizontalAlign= " Right " />
            <ExpandCollapseColumn Visible= " False ">
                <HeaderStyle Width= " 19px " />
            </ExpandCollapseColumn>
            <RowIndicatorColumn Visible= " False ">
                <HeaderStyle Width= " 20px " />
            </RowIndicatorColumn>
        </MasterTableView>
        <StatusBarSettings LoadingText= " 读取中... " ReadyText= " 完成 " /> 
    </radG:RadGrid>
</asp:Content>

 

后台页面代码

 

ExpandedBlockStart.gif 后台代码
using System;
using System.Collections;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using xxx.BLL;
using xxx.Model;
using Telerik.WebControls;

public  partial  class PerformanceWarning_PerformanceIndicator : System.Web.UI.Page
{
     private ArrayList arrHeaderCellsOne =  null;
     private ArrayList arrHeaderCellsTwo =  null;
     private ArrayList arrHeaderCellsThree =  null;
     private Hashtable hiddenColumn =  new Hashtable();

     protected  void Page_Load( object sender, EventArgs e)
    {
        MergeGrid(); 
    }

     protected  void btnQuery_Click( object sender, EventArgs e)
    {
        rgData.Rebind(); // 重新绑定数据 
    }


     public  class LabelColumn : ITemplate
    {
         private  string lblID;
         public LabelColumn()
        {
             //                 'Add constructor stuff here
        }

         public LabelColumn( string lblID)
        {
             this.lblID = lblID;
             //                 'Add constructor stuff here
        }

         public  void InstantiateIn(Control container)
        {
            Label label =  new Label();
            label.DataBinding +=  new EventHandler( this.BindLabelColumn);
            container.Controls.Add(label);
            label.ID = lblID;
        }

         public  void BindLabelColumn( object sender, EventArgs e)
        {
            Label label = (Label)sender;
            Telerik.WebControls.GridItem container = (GridItem)label.NamingContainer;
            label.Text = Convert.ToString(container.ItemIndex +  1);
        }
    }
     public  class TextBoxColumn : ITemplate
    {
         private  string txtID;
         public TextBoxColumn()
        {
             //                 'Add constructor stuff here
        }

         public TextBoxColumn( string txtID)
        {
             this.txtID = txtID;
             //                 'Add constructor stuff here
        }

         public  void InstantiateIn(Control container)
        {
            TextBox txtbox =  new TextBox();
            txtbox.DataBinding +=  new EventHandler( this.BindTextBoxColumn);
            container.Controls.Add(txtbox);
            txtbox.ID = txtID;
        }

         public  void BindTextBoxColumn( object sender, EventArgs e)
        {
            TextBox txtbox = (TextBox)sender;
            Telerik.WebControls.GridItem container = (GridItem)txtbox.NamingContainer;
            txtbox.Text =  " 0 ";
        }
    }
     private  void MergeGrid()
    {
        rgData.Columns.Clear();
        ArrayList arrColumnID =  new ArrayList();
        ArrayList arrColumnName =  new ArrayList();
        ArrayList arrScale =  new ArrayList();
        hiddenColumn.Clear();

         int maxRowSpan =  1// 最大行距

         int columnNo =  0// 列号
        ArrayList headerOne =  new ArrayList();
        ArrayList headerTwo =  new ArrayList();
        ArrayList headerThree =  new ArrayList();

         if (maxRowSpan >  1)
        {
            hiddenColumn.Add( 00);
            hiddenColumn.Add( 11);
        }

        TableCell cellDefault =  new TableCell();

        cellDefault.Text =  " 序号 ";
        cellDefault.RowSpan =  1;
        cellDefault.ColumnSpan =  1;
        cellDefault.CssClass =  " MasterTable_Windows_Eric_001 ";
        cellDefault.Wrap =  false;
         // cellDefault.Width = Unit.Pixel(36);
        cellDefault.HorizontalAlign = HorizontalAlign.Center;
        headerOne.Add(cellDefault);
        columnNo =  0;

        GridTemplateColumn xuhaoCol =  new GridTemplateColumn();
        xuhaoCol.ItemTemplate =  new LabelColumn( " Index ");
        rgData.Columns.Add(xuhaoCol);

        cellDefault =  new TableCell();
        cellDefault.Text =  " 绩效指标内容 ";
        cellDefault.RowSpan = maxRowSpan;
        cellDefault.ColumnSpan =  1;
        cellDefault.CssClass =  " MasterTable_Windows_Eric_001 ";
        cellDefault.Wrap =  false;
        cellDefault.HorizontalAlign = HorizontalAlign.Center;
        headerOne.Add(cellDefault);
        columnNo++;

        GridBoundColumn Col1 =  new GridBoundColumn();
        Col1.DataField =  " JXZBMS ";
        rgData.Columns.Add(Col1);
 
        cellDefault =  new TableCell();
        cellDefault.Text =  " 绩效指标 ";
        cellDefault.RowSpan = maxRowSpan;
        cellDefault.ColumnSpan =  1;
        cellDefault.CssClass =  " MasterTable_Windows_Eric_001 ";
        cellDefault.Wrap =  false;
        cellDefault.HorizontalAlign = HorizontalAlign.Center;
        headerOne.Add(cellDefault);
        columnNo++;

        GridBoundColumn Col2 =  new GridBoundColumn();
        Col2.DataField =  " JXZB ";
        Col2.DataFormatString =  " {0:P4} ";
        rgData.Columns.Add(Col2);

        cellDefault =  new TableCell();
        cellDefault.Text =  " 指标分项内容 ";
        cellDefault.RowSpan = maxRowSpan;
        cellDefault.ColumnSpan =  2;
        cellDefault.CssClass =  " MasterTable_Windows_Eric_001 ";
        cellDefault.Wrap =  false;
        cellDefault.HorizontalAlign = HorizontalAlign.Center;
        headerOne.Add(cellDefault);
        columnNo++;

        GridBoundColumn Col3 =  new GridBoundColumn();
        Col3.DataField =  " JXZB_FZ_MS ";
        rgData.Columns.Add(Col3);
        GridBoundColumn Col4 =  new GridBoundColumn();
        Col4.DataField =  " JXZB_FZ ";
        rgData.Columns.Add(Col4);
  
        cellDefault =  new TableCell();
        cellDefault.Text =  " 考核起始日期 ";
        cellDefault.RowSpan = maxRowSpan;
        cellDefault.ColumnSpan =  1;
        cellDefault.CssClass =  " MasterTable_Windows_Eric_001 ";
        cellDefault.Wrap =  false;
        cellDefault.HorizontalAlign = HorizontalAlign.Center;
        headerOne.Add(cellDefault);
        columnNo++;

        GridBoundColumn Col5 =  new GridBoundColumn();
        Col5.DataField =  " QSRQ ";
        Col5.DataFormatString =  " {0:d} ";
        rgData.Columns.Add(Col5);

        cellDefault =  new TableCell();
        cellDefault.Text =  " 考核终止日期 ";
        cellDefault.RowSpan = maxRowSpan;
        cellDefault.ColumnSpan =  1;
        cellDefault.CssClass =  " MasterTable_Windows_Eric_001 ";
        cellDefault.Wrap =  false;
        cellDefault.HorizontalAlign = HorizontalAlign.Center;
        headerOne.Add(cellDefault);
        columnNo++;

        GridBoundColumn Col6 =  new GridBoundColumn();
        Col6.DataField =  " ZZRQ ";
        Col6.DataFormatString =  " {0:d} ";
        rgData.Columns.Add(Col6);

        ViewState[ " arrColumnID "] = arrColumnID;
        ViewState[ " arrColumnName "] = arrColumnName;
        ViewState[ " arrScale "] = arrScale;

        AddMergeHeader1(headerOne);
        AddMergeHeader2(headerTwo);
        AddMergeHeader3(headerThree);
    }
     private  void NewRenderMethod(HtmlTextWriter writer, Control ctl)
    {
         int maxRowSpan =  1// 最大行距 

         if (maxRowSpan >  0)
        {
             if (maxRowSpan ==  1)
            {
                 if (arrHeaderCellsOne !=  null)
                {
                     for ( int i =  0; i < arrHeaderCellsOne.Count; i++)
                    {
                        TableCell item = (TableCell)arrHeaderCellsOne[i];
                        item.CssClass =  " MasterTable_Web20_Eric_001 ";
                        item.RenderControl(writer);
                    }
                }

            }
             if (maxRowSpan ==  2)
            {
                 if (arrHeaderCellsOne !=  null)
                {
                     for ( int i =  0; i < arrHeaderCellsOne.Count; i++)
                    {
                        TableCell item = (TableCell)arrHeaderCellsOne[i];
                        item.CssClass =  " MasterTable_Web20_Eric_001 ";
                        item.RenderControl(writer);
                    }
                    writer.WriteEndTag( " TR ");
                }

                 if (arrHeaderCellsTwo !=  null)
                {
                     for ( int j =  0; j < arrHeaderCellsTwo.Count; j++)
                    {
                        TableCell item = (TableCell)arrHeaderCellsTwo[j];
                        item.CssClass =  " MasterTable_Web20_Eric_001 ";
                        item.RenderControl(writer);
                    }
                }
            }
             else  if (maxRowSpan ==  3)
            {
                 if (arrHeaderCellsOne !=  null)
                {
                     for ( int i =  0; i < arrHeaderCellsOne.Count; i++)
                    {
                        TableCell item = (TableCell)arrHeaderCellsOne[i];
                        item.CssClass =  " MasterTable_Web20_Eric_001 ";
                        item.RenderControl(writer);
                    }
                    writer.WriteEndTag( " TR ");
                }

                 if (arrHeaderCellsTwo !=  null)
                {
                     for ( int j =  0; j < arrHeaderCellsTwo.Count; j++)
                    {
                        TableCell item = (TableCell)arrHeaderCellsTwo[j];
                        item.CssClass =  " MasterTable_Web20_Eric_001 ";
                        item.RenderControl(writer);
                    }
                    writer.WriteEndTag( " TR ");
                }

                 if (arrHeaderCellsThree !=  null)
                {
                     for ( int z =  0; z < arrHeaderCellsThree.Count; z++)
                    {
                        TableCell item = (TableCell)arrHeaderCellsThree[z];
                        item.CssClass =  " MasterTable_Web20_Eric_001 ";
                        item.RenderControl(writer);
                    }
                }

            }

        }

    }
     private  void AddMergeHeader1(ArrayList arrHeaderCells)
    {
        arrHeaderCellsOne = arrHeaderCells;
    }
     private  void AddMergeHeader2(ArrayList arrHeaderCells)
    {
        arrHeaderCellsTwo = arrHeaderCells;
    }
     private  void AddMergeHeader3(ArrayList arrHeaderCells)
    {
        arrHeaderCellsThree = arrHeaderCells;
    }

     protected  void rgData_NeedDataSource( object source, Telerik.WebControls.GridNeedDataSourceEventArgs e)
    {
        DataTable dt =  new DataTable();

        DateTime date1 = txtMinDate.IsEmpty ==  true ? DateTime.Parse( " 1900/1/1 ") : txtMinDate.SelectedDate.Value;
        DateTime date2 = txtMaxDate.IsEmpty ==  true ? DateTime.Parse( " 9999/12/31 ") : txtMaxDate.SelectedDate.Value;
        dt = HengQinDS.BLL.JX_ZB_BLL.GetIndiList(date1, date2);
         this.rgData.DataSource = dt;

    }
     protected  void rgData_ItemDataBound( object sender, Telerik.WebControls.GridItemEventArgs e)
    {
         if (e.Item.ItemType == Telerik.WebControls.GridItemType.Item || e.Item.ItemType == Telerik.WebControls.GridItemType.AlternatingItem)
        {
             // 序号
            Telerik.WebControls.GridTemplateColumn columnXuHao =  new Telerik.WebControls.GridTemplateColumn();
            columnXuHao.HeaderStyle.Width = Unit.Pixel( 40);
            columnXuHao.ItemStyle.Width = Unit.Pixel( 40);
            columnXuHao.HeaderText =  " 序号 ";
            columnXuHao.ItemTemplate =  new LabelColumn( " Index ");

            rgData.Columns.Add(columnXuHao);
            Label lblXuHao = (Label)e.Item.FindControl( " Index ");
             int XuHao = rgData.CurrentPageIndex * rgData.PageSize + e.Item.ItemIndex +  1;
            lblXuHao.Text = XuHao.ToString();

             #region 单元格合并
             int previousItemIndex = e.Item.ItemIndex -  1;
             if (previousItemIndex >=  0)
            {
                 int num1 =  int.Parse(ViewState[ " Num0 "].ToString());

                 string now = rgData.MasterTableView.DataKeyValues[e.Item.ItemIndex][ " JXZBMS "].ToString();
                 string old = rgData.MasterTableView.DataKeyValues[previousItemIndex - num1][ " JXZBMS "].ToString();
                 if (now == old)
                {
                    e.Item.OwnerTableView.Items[previousItemIndex - num1][ " JXZBMS "].RowSpan =  2 + num1;
                    e.Item.Cells[ 3].Visible =  false;
                    num1++;
                    ViewState[ " Num0 "] = num1.ToString();
                }
                 else
                {
                    ViewState[ " Num0 "] =  " 0 ";
                    previousItemIndex = - 1;
                }
            }
             else
            {
                ViewState[ " Num0 "] =  " 0 ";
                previousItemIndex = - 1;
            }

             if (previousItemIndex >=  0)
            {
                 int num2 =  int.Parse(ViewState[ " Num1 "].ToString());

                 string now = rgData.MasterTableView.DataKeyValues[e.Item.ItemIndex][ " JXZBMS "].ToString();
                 string old = rgData.MasterTableView.DataKeyValues[previousItemIndex - num2][ " JXZBMS "].ToString();
                 if (now == old)
                {
                    e.Item.OwnerTableView.Items[previousItemIndex - num2][ " JXZB "].RowSpan =  2 + num2;
                    e.Item.Cells[ 4].Visible =  false;
                    num2++;
                    ViewState[ " Num1 "] = num2.ToString();
                }
                 else
                {
                    ViewState[ " Num1 "] =  " 0 ";
                    previousItemIndex = - 1;
                }
            }
             else
            {
                ViewState[ " Num1 "] =  " 0 ";
                previousItemIndex = - 1;
            }


            previousItemIndex = e.Item.ItemIndex -  1;
             if (previousItemIndex >=  0)
            {
                 int num3 =  int.Parse(ViewState[ " Num2 "].ToString());


                 string now = rgData.MasterTableView.DataKeyValues[e.Item.ItemIndex][ " JXZBMS "].ToString();
                 string old = rgData.MasterTableView.DataKeyValues[previousItemIndex - num3][ " JXZBMS "].ToString();
                 if (now == old)
                {
                    e.Item.OwnerTableView.Items[previousItemIndex - num3][ " QSRQ "].RowSpan =  2 + num3;
                    e.Item.Cells[ 7].Visible =  false;
                    num3++;
                    ViewState[ " Num2 "] = num3.ToString();
                }
                 else
                {
                    ViewState[ " Num2 "] =  " 0 ";
                    previousItemIndex = - 1;
                }
            }
             else
            {
                ViewState[ " Num2 "] =  " 0 ";
            }

            previousItemIndex = e.Item.ItemIndex -  1;
             if (previousItemIndex >=  0)
            {
                 int num4 =  int.Parse(ViewState[ " Num3 "].ToString());
                 string now = rgData.MasterTableView.DataKeyValues[e.Item.ItemIndex][ " JXZBMS "].ToString();
                 string old = rgData.MasterTableView.DataKeyValues[previousItemIndex - num4][ " JXZBMS "].ToString();
                 if (now == old)
                {
                    e.Item.OwnerTableView.Items[previousItemIndex - num4][ " ZZRQ "].RowSpan =  2 + num4;
                    e.Item.Cells[ 8].Visible =  false;
                    num4++;
                    ViewState[ " Num3 "] = num4.ToString();
                }
                 else
                {
                    ViewState[ " Num3 "] =  " 0 ";
                    previousItemIndex = - 1;
                }
            }
             else
            {
                ViewState[ " Num3 "] =  " 0 ";
            }
             #endregion

        }
    }

     protected  void rgData_OnItemCreate( object sender, GridItemEventArgs e)
    {
         if (e.Item.ItemType == GridItemType.Header)
        {
            e.Item.SetRenderMethodDelegate( new RenderMethod(NewRenderMethod));
        }
    }
}

 

出来的效果图

转载于:https://www.cnblogs.com/neru/archive/2012/05/02/2479349.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值