其实代码本来是多表头合并的,这里只做了一层~ 哦哈哈
====================================================================
前台页面代码
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.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 " > - </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} &nbsp;&nbsp;&nbsp;&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>
<%@ 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 " > - </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} &nbsp;&nbsp;&nbsp;&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>
后台页面代码
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.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( 0, 0);
hiddenColumn.Add( 1, 1);
}
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));
}
}
}
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( 0, 0);
hiddenColumn.Add( 1, 1);
}
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));
}
}
}
出来的效果图