日期:2014-05-20  浏览次数:20500 次

如何在自定义的继承自GridView的控件中加入PagerTemplate行。
我想实现自定义分页,但不想每个页面都重复去写代码,因此决定扩展GridView空间,问题是如何动态创建PagerTemplate并加入到GridView中
主要是想实现不同的翻页方式。

我不想用现成的开发好的,未开源的控件。

------解决方案--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Saga.LivePortal.CustomControl
{
[ToolboxData( " <{0}:MyGridView runat=server> </{0}:MyGridView> ")]
public class MyGridView : System.Web.UI.WebControls.GridView, IPostBackEventHandler, IPostBackDataHandler
{
/// <summary>
///
/// </summary>
public MyGridView()
{
base.SelectedRowStyle.CssClass = "SelectedItem ";
base.RowStyle.CssClass = "GridItem ";
base.AlternatingRowStyle.CssClass = "GridAltItem ";
base.HeaderStyle.CssClass = "GridHeader ";
base.EditRowStyle.CssClass = "SelectedItem ";
base.RowStyle.Height = 20;
}
/// <summary>
///
/// </summary>
public delegate void OnReBindData();
/// <summary>
///
/// </summary>
public event OnReBindData ReBindData;
/// <summary>
/// const string stands for the navigate-to-first-page command sent from the grid
/// </summary>
private const string NAVIGATE_FIRST = "NAV_FIRST ";
/// <summary>
/// const string stands for the navigate-to-last-page command sent from the grid
/// </summary>
private const string NAVIGATE_LAST = "NAV_LAST ";
/// <summary>
/// const string stands for the navigate-to-previous-page command sent from the grid
/// </summary>
private const string NAVIGATE_PREVIOUS = "NAV_PREVIOUS ";
/// <summary>
/// const string stands for the navigate-to-next-page command sent from the grid
/// </summary>
private const string NAVIGATE_NEXT = "NAV_NEXT ";

private const string PAGESIZE_CONTROL = "PAGESIZE_CONTROL ";

private bool showPageNavigator = true;

public bool ShowPageNavigator
{
get
{
return showPageNavigator;
}
set
{
showPageNavigator = value;
}
}

#region Override GridView methods
public override void RenderControl(HtmlTextWriter writer)
{
try
{
writer.Write( " <table border=\ "0\ " class=\ "table_dark_inside\ " width=\ " " + this.Width.ToString() + "\ "

cellpadding=\ "0\ " cellspacing=\ "0\ "> ");
writer.Write( " <tr> <td align=\ "left\ " width=\ "100%\ "> ");
base.Render(writer);
writer.Write( " </td> </tr> ");
if (this.showPageNavigator)
{
writer.Write( " <tr> <td> ");
DrawPager(writer);