快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

一个自定义的可以分页,排序,扩展显示GRID控件

第一次写,忘记注解,对不住.

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Xml;

namespace Grid
{

public class IDArgs : System.EventArgs
{
private string id;

//Constructor.
//
public IDArgs(string Id)
{
this.id =Id;

}

// The NumRings property returns the number of rings
// that the alarm clock has sounded when the alarm event
// is generated.
//
public string ID
{
get { return this.id ;}
}

}

///
/// Summary description for WebCustomControl1.
///
[DefaultProperty("Text"),
ToolboxData("<{0}:WebCustomControl1 runat=server>")]
public class WebCustomControl1 : System.Web.UI.WebControls.WebControl, IPostBackEventHandler
{

public string EditUrl
{
get
{
if(this.ViewState["EditUrl"]!=null) return (string)this.ViewState["EditUrl"];
else return "";
}
set
{
this.ViewState["EditUrl"]=value;
}
}

public string ExpandColumn
{
get
{
if(this.ViewState["ExpandColumn"]!=null) return (string)this.ViewState["ExpandColumn"];
else return "";
}
set
{
this.ViewState["ExpandColumn"]=value;
}
}

//set paging

public int IsPaging
{
get
{
if(this.ViewState["IsPaging"]!=null) return (int)this.ViewState["IsPaging"];
else return 0;
}
set
{
this.ViewState["IsPaging"]=value;
}
}

public int PageCount
{
get
{
if(this.ViewState["PageCount"]!=null) return (int)this.ViewState["PageCount"];
else return 0;
}
set
{
this.ViewState["PageCount"]=value;
}
}

public int CurrentPage
{
get
{
if(this.ViewState["CurrentPage"]!=null) return (int)this.ViewState["CurrentPage"];
else return 1;
}
set
{
this.ViewState["CurrentPage"]=value;
}
}

//set sort
public int IsSort
{
get
{
if(this.ViewState["IsSort"]!=null) return (int)this.ViewState["IsSort"];
else return 0;
}
set
{
this.ViewState["IsSort"]=value;
}
}

public int sortColumn
{
get
{
if(this.ViewState["sortColumn"]!=null) return (int)this.ViewState["sortColumn"];
else return -1;
}
set
{
this.ViewState["sortColumn"]=value;
}
}



public string sortColumnName
{
get
{
if(this.ViewState["sortColumnName"]!=null) return (string)this.ViewState["sortColumnName"];
else return "";
}
set
{
this.ViewState["sortColumnName"]=value;
}
}


public string sortOrder
{
get
{
if(this.ViewState["sortOrder"]!=null) return (string)this.ViewState["sortOrder"];
else return "ASC";
}
set
{
this.ViewState["sortOrder"]=value;
}
}
public DataSet source
{
get
{
return (DataSet)this.ViewState["source"];
}
set
{

this.ViewState["source"]=value;
}
}

public event EventHandler Delete;
public event EventHandler Refresh;


public void RaisePostDataChangedEvent()
{

// IPostBackDataHandler 协定的一部分。假如曾经从 LoadPostData 方式返回真
// (表示需要引发更改通知),则被调用。由于
// 始终返回假,则此方式只是一个空操作。
}

// protected void OnChange(EventArgs e)
// {
// Sort(this, e);
// }
public void RaisePostBackEvent(String eventArgument)
{
if (eventArgument.IndexOf("|")>-1)
{

IDArgs ide=new IDArgs(eventArgument.Substring(eventArgument.IndexOf("|")+1));
if (Delete!=null)
{
Delete(this,ide);

}
return;
}
string flag="";
switch(eventArgument)
{
case "first":this.CurrentPage =1;break;
case "prev":this.CurrentPage -- ;break;
case "next":this.CurrentPage ++ ;break;
case "last":this.CurrentPage =this.PageCount;break;
case "":break;
default:
{
DataTable dt=source.Tables[0];
int lastColumn=sortColumn;
for(int i=0;i if (eventArgument==dt.Columns[i].ColumnName)
{
sortColumn=i;
break;
}

if (lastColumn==sortColumn) { if (this.sortOrder=="DESC") sortOrder="ASC"; else sortOrder="DESC";}
else sortOrder="ASC";
sortColumnName=eventArgument;
break;
}
}

// if ( flag=="sort")
// {
// if(this.IsSort ==0)
// {
// return;
// }
// }

if ( Refresh!=null) Refresh(this,EventArgs.Empty );
}



private string WriteScipt()
{
string script=@" ";
string style=@"

";


return script+style;
}

private string writeList()
{

int[] columnWidth=new int[] {20,100,100,100,0};
DataTable dt=source.Tables[0];
string title=(this.IsSort ==0)?"title":"SortTitle";
string list="
";
if (ExpandColumn!="") list+="";

if (this.IsSort==1)
{
string sortstr="";
string sortFlag=(this.sortOrder=="ASC")?"5":"6";
//set header and sort
for(int j=1;j {
if (sortColumn==j)
{
sortstr=""+sortFlag+"";
}

else sortstr="";
if (columnWidth[j]==0)
list+=""+dt.Columns[j].ColumnName+sortstr+"";
else
list+=""+dt.Columns[j].ColumnName+sortstr+"";
}
}
else
{
for(int j=1;j {

if (columnWidth[j]==0)
list+=""+dt.Columns[j].ColumnName+"";
else
list+=""+dt.Columns[j].ColumnName+"";
}
}

list+="L
";
list+="";

list+="";
for(int i=0;i {
list+="";
//expand column
if (ExpandColumn!="")
list+="5 ";
//delete column
list+="r";
//edit column
list+="1";

for(int j=1;j {
list+=""+dt.Rows[i][j].ToString()+"";
}
list+="
";
//expand display
if (ExpandColumn!="")
list+=" desc


--------------------------------------------------------------------------------

"+dt.Rows[i][ExpandColumn].ToString()+"

";
}
list +="
";


if (this.IsPaging ==0)return list;
//set pageing
string paging="";
if ( PageCount<2)
paging="9|3|4|:";
else
{
if (this.CurrentPage==1)
paging="9|3|4|:";
else if (this.CurrentPage ==this.PageCount)
paging="9|3|4|:";
else
paging="9|3|4|:";
}


list +="Total:"+this.PageCount+"Page:"+this.CurrentPage+""+paging;
return list;
}
///
/// Render this control to the output parameter specified.
///
/// The HTML writer to write out to
protected override void Render(HtmlTextWriter output)
{
output.Write(WriteScipt());
output.Write(writeList());
}
}
}
返回类别: 教程
上一教程: ASP技术在论坛中的运用(四)
下一教程: 用ASP设计购物推车

您可以阅读与"一个自定义的可以分页,排序,扩展显示GRID控件"相关的教程:
· 一个显示GRID的VBSCRIPT对象
· 一个超强通用的分页显示函数
· 一个通用数据库显示程序,能调任意库,任意字段,多要害字搜索,自动分页
· 让自定义文件下载支持断点续传(HTTP_RANGE ADODB.STREAM)
· 分页的显示-->前后翻滚10页的实现
    微笑服务 优质保证 索取样品