有预定义样式的可以自定义分页的DataGrid

实现一个有预定义样式的可以自定义分页的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="";
    }
   }
  }

 }

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值