读书人

网上找了一个改写的GridView类,不知道

发布时间: 2011-12-27 22:22:55 作者: rapoo

网上找了一个改写的GridView类,不知道怎么用,大家看看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;
using System.Text.RegularExpressions;

namespace ZLDK.JXGL.WebControls
{
[ToolboxData( " <{0}:uGridView runat=server> </{0}:uGridView> ")]
public class uGridView : GridView, iuControl
{
//委托事件
public delegate void SelectNumberEventHandler(SelectNumberEventArgs e);

private static int summaryCount = 0; //保存其数量值
private Paging.PagingStyleCollection _pagingStyle; //是否要进行分页


#region 构造函数
public uGridView(): base()
{
ViewState[ "IsHandle "] = true;
ViewState[ "IsFixHeader "] = true;
// 新增“uGridView_RowDataBound”事件处理
this.RowDataBound += new GridViewRowEventHandler(uGridView_RowDataBound);
}
#endregion

#region 属性
[Bindable(true)]
[Category( "Appearance ")]
[DefaultValue( " ")]
[Localizable(true)]
public string CodeID
{
get
{
String s = (String)ViewState[ "CodeID "];
return ((s == null) ? String.Empty : s);
}

set
{
ViewState[ "CodeID "] = value;


}
}

[Description( "是否可以使用 ")]
[DefaultValue(true)]
public override bool Enabled
{
get
{

return base.Enabled;
}
set
{
if (IsHandle)
base.Enabled = value;
}
}

[Bindable(true)]
[Category( "Appearance ")]
[DefaultValue(true)]
[Localizable(true)]
[Description( "是否可以编程控制Enabled ")]
public bool IsHandle
{
get
{
return (bool)ViewState[ "IsHandle "];
}

set
{
ViewState[ "IsHandle "] = value;
}
}

/// <summary>
/// 是否固定表头?
/// </summary>
[Description( "是否固定表头? "), Category( "扩展 "), DefaultValue(false), NotifyParentProperty(true)]


public virtual bool IsFixHeader
{
get { return (bool)ViewState[ "IsFixHeader "]; }
set { ViewState[ "IsFixHeader "] = value; }
}

//获取记录总数
[Description( "数据总数 "), DefaultValue( "0 "), Category( "扩展 ")]
public int SummaryCount
{
get { return summaryCount; }
set { summaryCount = value; }
}

// 自定义分页样式
[Description( "自定义分页样式 "), DefaultValue( "default "), Category( "扩展 ")]
public Paging.PagingStyleCollection PagingStyle
{
get { return _pagingStyle; }
set { _pagingStyle = value; }
}

#endregion

#region 数据绑定事件

protected void uGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
//固定表头
if (this.IsFixHeader && e.Row.RowType == DataControlRowType.Header)
{
for (int j = 0; j < e.Row.Cells.Count; j++)
{
e.Row.Cells[j].Attributes.Add( "style ", " position: relative; top: expression(this.offsetParent.scrollTop-1); ");
}


}
}

#endregion

#region 固定表头

protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)
{
if (dataSource == null)
{
DataControlField[] fieldArray = new DataControlField[this.Columns.Count];
this.Columns.CopyTo(fieldArray, 0);

if (fieldArray != null && fieldArray.Length > 0)
{
if (this.ShowHeader && (this.HeaderRow == null))
{
GridViewRow headerRow = null;
if (this.HeaderRow == null)
{
headerRow = this.CreateRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);
this.InitializeRow(headerRow, fieldArray);
FieldInfo field = typeof(System.Web.UI.WebControls.GridView).GetField( "_headerRow ", BindingFlags.NonPublic | BindingFlags.Instance);
if (field != null)


{
field.SetValue(this, headerRow);
}
Table headerTable = this.CreateChildTable();
headerTable.Rows.Add(headerRow);
Controls.Add(headerTable);
}
else
{
headerRow = this.HeaderRow;
}

GridViewRowEventArgs args = new GridViewRowEventArgs(headerRow);

this.OnRowCreated(args);
if (dataBinding)
{
headerRow.DataBind();
this.OnRowDataBound(args);


headerRow.DataItem = null;
}
}
}
return 0;
}
else
{
return base.CreateChildControls(dataSource, dataBinding);
}
}
#endregion



[解决办法]
mark
[解决办法]
留个记号!用到时再看!
[解决办法]
代码太长了啊,应该是一个自定义控件,可以编译成dll文件,然后就像其他控件一样直接拖到页面上直接使用的
[解决办法]
留下脚印

读书人网 >asp.net

热点推荐