上一篇:有关windows服务的创建,控制 >>
一个自定义的可以分页,排序,扩展显示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());
}
}
}
下一篇:转贴(电脑报):VBA开发实用指南 >>
相关文章:
- · 浅谈引用计数
- · 使你的窗体保留在桌面的最上面
- · 研究心得------->Seskin控件包中SeskinEdit汉字问题的解决办法
- · 建立三层结构的ASP应用程序
- · 研究心得------->CPU信息的获得,比较全面的
- · Sender 的??用:所有Edit共用一???^?V格式
- · override deal with window closing in database application
- · C++ 和 Delphi 的函数覆盖(Override)与重载(overload
- · 正确处理ASP动态网页中的容错机制
- · 几例在ASP存储过程的使用方法
- · 实现让每句话的头一个字母都大写
- · 如何尽快释放掉Connection对象建立的连接?
- · Connection对象的应用
- · 利用ASP打造网站论坛DIY
- · Asp中代码与页面的分离
- · 一个ASP版的图片浏览管理器
- · 实现有管理功能的ASP留言板
- · 编译asp应用程序成为exe文件
- · 如何准确定时运行ASP文件
- · ASP整合的一个SQL语句类
- · Jmail发信的实例,模块化随时调用
- · ASP字数计算函数
- · 无刷新随时取得用户当前活动信息
- · ASP自定义函数,仿VBA中域函数DLookup
- · asp中对ip进行过滤限制函数
- · 让ASP程序运行于非Windows平台
- · ASP中实现文件上传方法的研究
- · asp国标转大五码
- · Global.asa文件用法大全
- · 微软建议的ASP性能优化28条守则
- · 在ASP中取得服务器网卡的MAC地址、DNS地址等网络信息
- · ASP中记录的分页
- · 下载网页中的所有资源
- · 函数方便制作管理界面
- · 无限级目录树+记忆节点状态
- · 利用C#在SQL Server2000存取图像 For Window
- · 通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
- · ASP模板类[实现一维循环和二维循环,可以从文件、数据库、变量取摸板]
