表头合并&单元格合并_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 表头合并&单元格合并

表头合并&单元格合并

 2013/7/31 15:09:19  蒋叶湖  博客园  我要评论(0)
  • 摘要:其实代码本来是多表头合并的,这里只做了一层~哦哈哈====================================================================前台页面代码前台<%@PageLanguage="C#"MasterPageFile="~/Master/DefaultPage.master"AutoEventWireup="true"CodeFile="PerformanceIndicator.aspx
  • 标签:

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

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

前台页面代码

class="code_img_closed" style="display: none;" src="/Upload/Images/2013073115/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('dad766a5-d07c-42b9-9945-e0f587e14e66',event)" src="/Upload/Images/2013073115/2B1B950FA3DF188F.gif" alt="" /> 复制代码 <%@ 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> 复制代码

 

后台页面代码

 

复制代码 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));
        }
    }
} 复制代码

 

出来的效果图

    分类
  • 相关文章
发表评论
用户名: 匿名