实现一个有预定义样式的可以自定义分页的DataGrid- -
在做一些aspx页面时,经常需要提供一些列表性质的东西,通常采用了Datagrid来实现,为了界面的统一和维护的方便,这里特意编写了一个自定义的Datagrid控件,实现的内容包括:预定样式,支持自定义分页,支持页跳转。如果认为可以,大家可以自行拿去修改。
public class CustomDataGrid : System.Web.UI.WebControls.DataGrid
{
public CustomDataGrid() : base()
{
this.HorizontalAlign=HorizontalAlign.Center;
this.Width=Unit.Percentage(98);
this.AllowCustomPaging=true;
this.AllowPaging=true;
this.PageSize=20;
this.BorderStyle=BorderStyle.Solid;
this.BorderWidth=Unit.Pixel(1);
this.BorderColor=Color.Black;
this.AllowSorting=true;
this.AutoGenerateColumns=false;
this.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
this.HeaderStyle.BackColor=Color.Gainsboro;
this.HeaderStyle.Font.Bold=false;
this.ItemStyle.BackColor=Color.White;
this.PagerStyle.BackColor=Color.WhiteSmoke;
this.PagerStyle.Position=PagerPosition.TopAndBottom;
this.PagerStyle.ForeColor=Color.Black;
this.PagerStyle.HorizontalAlign=HorizontalAlign.Right;
this.PagerStyle.Mode=PagerMode.NumericPages;
}
private void GoToPageHandler(object sender, CommandEventArgs e)
{
this.OnPageIndexChanged(new DataGridPageChangedEventArgs(sender,Convert.ToInt32(e.CommandArgument)));
}
protected override void OnItemCreated(DataGridItemEventArgs e)
{
base.OnItemCreated (e);
if((e.Item.ItemType==ListItemType.Item)||(e.Item.ItemType==ListItemType.AlternatingItem))
{
e.Item.Attributes.Add("onmouseover","javascript:this.style.backgroundColor='#ddf3dd';");
e.Item.Attributes.Add("onmouseout","javascript:this.style.backgroundColor='white';");
}
if (e.Item.ItemType == ListItemType.Pager)
{
Literal c = new Literal();
Literal d = new Literal();
Literal f = new Literal();
LinkButton lbtn1 = new LinkButton();
LinkButton lbtn2 = new LinkButton();
lbtn1.CommandArgument = Convert.ToString(0);
lbtn2.CommandArgument = Convert.ToString(this.PageCount -1);
lbtn1.Command +=new CommandEventHandler(GoToPageHandler);
lbtn2.Command +=new CommandEventHandler(GoToPageHandler);
string sb = "页次:" + (this.CurrentPageIndex + 1) + ""+"/" + this.PageCount + "页 每页:" + this.PageSize + "";
TableCell pager = (TableCell) e.Item.Controls[0];
sb += " 总数:" + this.VirtualItemCount + " ";
string sb1 = " ... ";
string sb2 = ""+ this.PageCount;
c.Text = sb;
d.Text = sb1;
f.Text = sb1;
lbtn1.Text = "1";
lbtn2.Text = sb2;
lbtn1.Attributes.Add("style","color:darkorchid;text-decoration:none");
lbtn2.Attributes.Add("style","color:darkorchid;text-decoration:none");
pager.ToolTip = "此处为分页导航,您可以点击你想去的分页!→";
pager.Controls.AddAt(0, c);
pager.Controls.AddAt(1, lbtn1);
pager.Controls.AddAt(2, d);
pager.Controls[1].Visible=false;
pager.Controls[2].Visible=false;
pager.Controls.AddAt(pager.Controls.Count, f);
pager.Controls[pager.Controls.Count-1].Visible=false;
pager.Controls.Add(lbtn2);
pager.Controls[pager.Controls.Count-1].Visible=false;
for (int i=3; i {
Object o = pager.Controls[i];
if (o is LinkButton)
{
LinkButton h = (LinkButton) o;
if(h.Text == "...")
{
if(i == 3)
{
h.Text = "<<";
pager.Controls[1].Visible=true;
pager.Controls[2].Visible=true;
}
else
{
h.Text = ">>";
pager.Controls[pager.Controls.Count-2].Visible=true;
pager.Controls[pager.Controls.Count-1].Visible=true;
}
}
// h.Text = "[" + h.Text + "]";
h.Attributes.Add("style","color:blue;text-decoration:none");
}
else
{
try
{
Label l = (Label) o;
l.Text = "第" + l.Text + "页";
l.Attributes.Add("style","color:red;text-decoration:none");
}
catch{}
}
}
/**
* 以下代码增加页面跳转功能
*
* */
TextBox txtGoPage=new TextBox();
txtGoPage.BorderStyle = BorderStyle.Solid;
txtGoPage.BorderColor = Color.Black;
txtGoPage.BorderWidth = Unit.Pixel(1);
txtGoPage.Width = Unit.Pixel(20);
txtGoPage.Height = Unit.Pixel(16);
txtGoPage.ID="txtGoPage";
Button btnGoPage = new Button();
btnGoPage.BorderStyle = BorderStyle.Solid;
btnGoPage.BorderColor = Color.Black;
btnGoPage.BorderWidth = Unit.Pixel(1);
btnGoPage.Font.Size = FontUnit.Point(8);
btnGoPage.Height = Unit.Pixel(16);
btnGoPage.Text = "Go!";
btnGoPage.CommandName = "GoPage";
Literal litSpace1=new Literal();
Literal litSpace2=new Literal();
litSpace1.Text = " ";
litSpace2.Text = " ";
pager.Controls.Add(litSpace1);
pager.Controls.Add(txtGoPage);
pager.Controls.Add(litSpace2);
pager.Controls.Add(btnGoPage);
}
}
protected override void OnItemCommand(DataGridCommandEventArgs e)
{
base.OnItemCommand (e);
if((e.Item.ItemType == ListItemType.Pager) && (e.CommandName == "GoPage"))
{
TextBox tempObj =(TextBox)e.Item.FindControl("txtGoPage");
tempObj.Text = tempObj.Text.Trim();
try
{
int pagenum=Convert.ToInt32(tempObj.Text);
if (pagenum<1)
{
pagenum=1;
tempObj.Text = "1";
}
else if (pagenum>this.PageCount)
{
pagenum = this.PageCount;
tempObj.Text = this.PageCount.ToString();
}
pagenum = pagenum - 1;
this.OnPageIndexChanged(new DataGridPageChangedEventArgs(null,pagenum));
}
catch
{
tempObj.Text="";
}
}
}
}