看了這個控件,才發覺我的控件只是個嬰兒
https://files.cnblogs.com/invinboy/DotNetGrid.rar,兄弟們可以下載這個用.可以去看看這個控件的功能
http://invinboy.cnblogs.com/archive/2006/05/06/DotNetGrid.html.
參考別人的源碼,我寫了平生第一個DataGrid控件,不要笑我,有用的上的兄弟們儘管用,我調適過了,使用正常.以後我努力的自創出其他的控件,歡迎關注...
/Files/robin0925/DataGrid_itec.rar調用方法:
1.将控件拖到Web Page , 設置分頁屬性
2.代碼中
DataGrid_itec.iTECDataGrid.DT = ds.Tables[0]; ***傳數據到Server Control
ITECDataGrid1.DataSource = ds.Tables[0];
ITECDataGrid1.DataBind(); ***Bind數據
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace DataGrid_itec


{

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

{

Define#region Define
//private string text;
public System.Web.UI.WebControls.Button bt = new Button();
private TextBox tb = new TextBox();
private System.Web.UI.Page pg = new Page();

private static DataTable dt;
private LinkButton PrevPage = new LinkButton();
private LinkButton NextPage = new LinkButton();

private DropDownList ddl = new DropDownList();
private Label lbend=new Label();
private Label lbtag=new Label();
private Label lbddls=new Label();
private Label lbddle=new Label();

#endregion



DisplayProtery#region DisplayProtery
public int CurrentIndex

{
set

{
try

{
this.CurrentPageIndex = value;
}
catch

{}
}
get

{
return this.CurrentPageIndex;
}
}
#endregion


Proterty#region Proterty
[Bindable(true),
Category("Appearance"),
DefaultValue(""),
DescriptionAttribute("Session's name,Session used in BindData,and it must be DataView type")
]

public static DataTable DT

{
get

{
return dt;
}
set

{
dt = value;
}
}

[Bindable(true),
Category("Appearance"),
DefaultValue("")
]

public string TT

{
get

{
try

{
return this.ViewState["sort"].ToString();
}
catch

{
this.ViewState["sort"] = "asc";
return this.ViewState["sort"].ToString();
}
}
set

{
this.ViewState["sort"] = value;
}
}

#endregion


/**//// <summary>
/// 將此控件呈現給指定的輸出參數
/// </summary>
/// <param name="e">要寫出到的HTML編寫器</param>
protected override void OnItemCreated(DataGridItemEventArgs e)

{
if(e.Item.ItemType==ListItemType.Pager)

{
e.Item.Cells[0].Controls.Clear();
creatControl(e.Item.Cells[0]);
}
}

protected override void OnItemCommand(DataGridCommandEventArgs e)

{
string strCommandName = e.CommandName;
if(e.CommandName==null)

{
return ;
}
strCommandName = string.IsInterned(strCommandName);
switch(e.CommandName)

{
case "PrevPage":
PrevPage_click(null,null);
break;
case "NextPage":
NextPage_click(null,null);
break;
}

base.OnItemCommand(e);
}





InitDataGrid#region InitDataGrid

protected void creatControl(TableCell tc)

{
creatPageCount(tc);
creatCount(tc);
creatPage(tc);
creatDDL(tc);
}

private void creatCount(TableCell tc)

{
lbtag.Text = "每頁顯示紀錄數";
tb.Text = this.PageSize.ToString();
tb.Width=20;
bt.Width=40;
bt.Text = "提交";
bt.Click += new EventHandler(this.bt_click);
tc.Controls.Add(lbtag);
tc.Controls.Add(tb);
tc.Controls.Add(bt);
}

private void creatPageCount(TableCell tc)

{
Label lb = new Label();
lb.Text="<P align=\"right\"> 共"+this.PageCount+"頁 第"+(this.CurrentPageIndex+1)+"頁 ";
tc.Controls.Add(lb);

}

private void creatPage(TableCell tc)

{
PrevPage.Text="上一頁";
NextPage.Text="下一頁";
PrevPage.CommandName = "PrevPage";
NextPage.CommandName = "NextPage";
tc.Controls.Add(PrevPage);
tc.Controls.Add(NextPage);
}

private void creatDDL(TableCell tc)

{
lbend.Text="頁</p>";
lbddls.Text=" 跳轉到第";
ddl.AutoPostBack=true;
ddl.EnableViewState=true;
if (!this.Page.IsPostBack)

{
ddl.Items.Clear();
initDDL();
}
ddl.SelectedIndexChanged+=new EventHandler(ddl_SelectedIndexChanged);
tc.Controls.Add(lbddls);
tc.Controls.Add(ddl);
tc.Controls.Add(lbend);
}

private void initDDL()

{
int count = this.PageCount;
ddl.Items.Clear();
for(int i=1;i<=count;i++)

{
ddl.Items.Add(i.ToString());
}
}
#endregion


InitEvent#region InitEvent
private void bt_click(object sender , EventArgs e)

{
this.PageSize = Convert.ToInt32(tb.Text);
ddl.Items.Clear();
this.CurrentPageIndex = 0;
BindGrid();
initDDL();
}

private void PrevPage_click(object sender , EventArgs e)

{
int con = this.CurrentPageIndex;
if(CurrentPageIndex-1<0)

{}
else

{
CurrentPageIndex = con-1;
}

int tempIndex = CurrentPageIndex + 1;
ddl.SelectedValue = tempIndex.ToString();
BindGrid();
}

private void NextPage_click(object sender , EventArgs e)

{
int con = this.CurrentPageIndex;
if(CurrentPageIndex>=this.PageCount-1)

{
}
else

{
this.CurrentPageIndex = con + 1 ;
}
int tempIndex = CurrentPageIndex + 1 ;
ddl.SelectedValue = tempIndex.ToString();
BindGrid();
}

private void ddl_SelectedIndexChanged(object sender , EventArgs e)

{
int curri = Convert.ToInt32(ddl.SelectedValue) - 1;
this.CurrentPageIndex = curri;
BindGrid();
}

#endregion



GridFunction#region GridFunction

private void BindGrid()

{
try

{
this.DataSource = DT;
this.DataBind();
}
catch(Exception ex)

{
SaveLog(ex.ToString());
}
}

#endregion


Util#region Util
private void SaveLog(string strLog)

{
string strPath="";
strPath = @"D:";
strPath += @"\iTecDataGridLog.txt";
System.IO.FileStream fs = new System.IO.FileStream(strPath,System.IO.FileMode.OpenOrCreate,System.IO.FileAccess.Write);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs);
sw.BaseStream.Seek(0,System.IO.SeekOrigin.End);
sw.WriteLine(strLog);
sw.Flush();
sw.Close();
fs.Close();
}
#endregion

}
}
