想控制GridView分页样式,请教高手! 想控制分页的时候,当前页码为红色,加粗,请指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" DataSourceID="SqlDataSource1"> </asp:GridView>AllowPaging="True" 我只有2003的,2005的没时间试,你自己参考看能否实现吧if(e.Item.ItemType == System.Web.UI.WebControls.ListItemType.Pager) { System.Web.UI.ControlCollection cls = e.Item.Controls[0].Controls; for(int i = 0;i<cls.Count;i++) { string s = cls[i].GetType().ToString().Trim(); if(s == "System.Web.UI.WebControls.DataGridLinkButton") { System.Web.UI.WebControls.LinkButton lb = (System.Web.UI.WebControls.LinkButton)cls[i]; lb.Text = "第" + lb.Text + "页"; } if(s == "System.Web.UI.WebControls.Label") { System.Web.UI.WebControls.Label lb = (System.Web.UI.WebControls.Label)cls[i]; lb.Text = "第" + lb.Text + "页"; lb.ForeColor = System.Drawing.Color.Red; lb.Font.Bold = true; } } } 我是通过编辑PagerTemplate, 在PT里加两个LABEL控件, 然后在CS代码控件页码样式, 反正是很土的方法, 但是实现了想要的功能.不知道有没有更简单或者更规范不? gridview有三个属性:把allowpaging设置为true,pagesize设一个数字值,datasource绑定到一个数据库,这是第一种和数据库直接绑定的分法。另外一种是把datasource绑定到dataset或datatable ,你把dataset或datatable的一个事例dt或ds添到gridview的一个属性datamember中,再单际gridview的一个pagechanging事件,在这里面写gridview.pageindex=e.newpageindex;bind();bind()是自己定义的一个绑定的方法。以上写的有些单词可能有错,我也没有看代码。请多包涵。大致就这些。 楼主,working1997(haha)这位同志已经很好的回答了你的问题了 /// <summary> /// 产生主题列表分页显示的索引 HTML代码 /// </summary> private void GeneratePageIndex(int GvPageCount) { int[] pageList = new int[GvPageCount]; string s = ""; for (int i = 0; i != GvPageCount; ++i) { pageList[i] = i + 1; s += "<a href=\"default3.aspx?page=" + pageList[i] + "\"><span id=\"pageIndex_" + pageList[i] + "\"> " + pageList[i] + " </span></a>" + " "; } int curPageIndex; if (Request.QueryString["page"] != null && Request.QueryString["page"] != "") curPageIndex = int.Parse(Request.QueryString["page"]); else curPageIndex = 1; // 加 1 即为浏览用户所看到的页码 string curPageIndexHtml = "<a href=\"default3.aspx?page=" + curPageIndex + "\"><span id=\"pageIndex_" + curPageIndex + "\"> " + curPageIndex + " </span></a>"; string disableCurPageIndexHyperLink = "<span id=\"pageIndex_" + curPageIndex + "\"> " + curPageIndex + " </span>"; s = s.Replace(curPageIndexHtml, disableCurPageIndexHyperLink); ((Label)GridView1.BottomPagerRow.FindControl("Label7")).Text = s; }/// <summary> /// 主题多回复时,分页查看,此方法产生索引的HTML代码 /// </summary> /// <param name="replies">回复数</param> /// <returns>返回产生的HTML代码</returns> private string GeneratePageIndexCode(int replies) { int pageCount = replies / 10; if ((replies % 10) != 0) ++pageCount; string pageIndexCode = " <img src=\"multipage.gif\" border=\"0\"> "; if (pageCount > 8) { for (int i = 1; i != 7; ++i) pageIndexCode += "<a href=\"viewtopic.aspx?tid=3&page=" + i + "\"> " + i + "</a> "; pageIndexCode += "..."; pageIndexCode += "<a href=\"viewtopic.aspx?tid=3&page=" + pageCount + "\"> " + pageCount + "</a> "; } else { ++pageCount; // 提高效率,方便下面的循环 for (int i = 1; i != pageCount; ++i) pageIndexCode += "<a href=\"viewtopic.aspx?tid=3&page=" + i + "\"> " + i + "</a> "; } return pageIndexCode; } 抱歉, 上面的GeneratePageIndexCode方法是不用, 我不小心将他贴上来了 WTS分页三剑侠http://community.csdn.net/Expert/topic/5290/5290374.xml?temp=.5702173 vs2005 vs2008中的方法如下: 很爽哈。 protected override void OnRowDataBound(GridViewRowEventArgs e) { #region 分页的样式问题 if (e.Row.RowType == DataControlRowType.Pager) { System.Web.UI.ControlCollection cls = e.Row.Controls[0].Controls[0].Controls[0].Controls; for (int i = 0; i < cls.Count; i++) { string s = cls[i].Controls[0].GetType().ToString().Trim(); if (s == "System.Web.UI.WebControls.DataControlPagerLinkButton") { System.Web.UI.WebControls.LinkButton lb = (System.Web.UI.WebControls.LinkButton)cls[i].Controls[0]; lb.Font.Underline = true; } if (s == "System.Web.UI.WebControls.Label") { System.Web.UI.WebControls.Label lb = (System.Web.UI.WebControls.Label)cls[i].Controls[0]; //lb.Text = "第 " + lb.Text + "页 "; lb.ForeColor = System.Drawing.Color.Red; lb.Font.Bold = true; } } } #endregion base.OnRowDataBound(e); } 用AspNetPager吧,方便得多。好看得多。用自带的,太费事。 一个统计问题,不知道SQL怎么写? 又两条SQL语句的写法 jquery 问题 如何后台设置客户端文本框为只读属性? 关于数据库!!! 谁碰到过这个奇怪的问题?TXT控件设置为密码模式后。。。 微博@智能提示功能怎么做??? Web控件中如何写其他Web控件的ClientID “客户控件”的参数能否是变量的? 怎样解决表单验证时指向特定的页面 关于网站左侧栏布局问题 java里的super 相当c#里的什么关键字
</asp:GridView>AllowPaging="True"
if(e.Item.ItemType == System.Web.UI.WebControls.ListItemType.Pager)
{
System.Web.UI.ControlCollection cls = e.Item.Controls[0].Controls;
for(int i = 0;i<cls.Count;i++)
{
string s = cls[i].GetType().ToString().Trim();
if(s == "System.Web.UI.WebControls.DataGridLinkButton")
{
System.Web.UI.WebControls.LinkButton lb = (System.Web.UI.WebControls.LinkButton)cls[i];
lb.Text = "第" + lb.Text + "页";
}
if(s == "System.Web.UI.WebControls.Label")
{
System.Web.UI.WebControls.Label lb = (System.Web.UI.WebControls.Label)cls[i];
lb.Text = "第" + lb.Text + "页"; lb.ForeColor = System.Drawing.Color.Red; lb.Font.Bold = true;
}
}
}
不知道有没有更简单或者更规范不?
另外一种是把datasource绑定到dataset或datatable ,你把dataset或datatable的一个事例dt或ds添到gridview的一个属性datamember中,再单际gridview的一个pagechanging事件,在这里面写gridview.pageindex=e.newpageindex;bind();
bind()是自己定义的一个绑定的方法。
以上写的有些单词可能有错,我也没有看代码。请多包涵。大致就这些。
/// 产生主题列表分页显示的索引 HTML代码
/// </summary>
private void GeneratePageIndex(int GvPageCount)
{
int[] pageList = new int[GvPageCount];
string s = "";
for (int i = 0; i != GvPageCount; ++i)
{ pageList[i] = i + 1;
s += "<a href=\"default3.aspx?page=" + pageList[i] + "\"><span id=\"pageIndex_" + pageList[i] + "\"> " + pageList[i] + " </span></a>" + " ";
}
int curPageIndex;
if (Request.QueryString["page"] != null && Request.QueryString["page"] != "")
curPageIndex = int.Parse(Request.QueryString["page"]);
else
curPageIndex = 1;
// 加 1 即为浏览用户所看到的页码
string curPageIndexHtml = "<a href=\"default3.aspx?page=" + curPageIndex + "\"><span id=\"pageIndex_" + curPageIndex + "\"> " + curPageIndex + " </span></a>";
string disableCurPageIndexHyperLink = "<span id=\"pageIndex_" + curPageIndex + "\"> " + curPageIndex + " </span>";
s = s.Replace(curPageIndexHtml, disableCurPageIndexHyperLink);
((Label)GridView1.BottomPagerRow.FindControl("Label7")).Text = s;
}/// <summary>
/// 主题多回复时,分页查看,此方法产生索引的HTML代码
/// </summary>
/// <param name="replies">回复数</param>
/// <returns>返回产生的HTML代码</returns>
private string GeneratePageIndexCode(int replies)
{
int pageCount = replies / 10;
if ((replies % 10) != 0)
++pageCount;
string pageIndexCode = " <img src=\"multipage.gif\" border=\"0\"> ";
if (pageCount > 8)
{
for (int i = 1; i != 7; ++i)
pageIndexCode += "<a href=\"viewtopic.aspx?tid=3&page=" + i + "\"> " + i + "</a> ";
pageIndexCode += "...";
pageIndexCode += "<a href=\"viewtopic.aspx?tid=3&page=" + pageCount + "\"> " + pageCount + "</a> ";
}
else
{
++pageCount; // 提高效率,方便下面的循环
for (int i = 1; i != pageCount; ++i)
pageIndexCode += "<a href=\"viewtopic.aspx?tid=3&page=" + i + "\"> " + i + "</a> ";
}
return pageIndexCode;
}
http://community.csdn.net/Expert/topic/5290/5290374.xml?temp=.5702173
{
#region 分页的样式问题
if (e.Row.RowType == DataControlRowType.Pager)
{ System.Web.UI.ControlCollection cls = e.Row.Controls[0].Controls[0].Controls[0].Controls;
for (int i = 0; i < cls.Count; i++)
{
string s = cls[i].Controls[0].GetType().ToString().Trim(); if (s == "System.Web.UI.WebControls.DataControlPagerLinkButton")
{
System.Web.UI.WebControls.LinkButton lb = (System.Web.UI.WebControls.LinkButton)cls[i].Controls[0]; lb.Font.Underline = true;
} if (s == "System.Web.UI.WebControls.Label")
{
System.Web.UI.WebControls.Label lb = (System.Web.UI.WebControls.Label)cls[i].Controls[0];
//lb.Text = "第 " + lb.Text + "页 "; lb.ForeColor = System.Drawing.Color.Red; lb.Font.Bold = true;
}
}
}
#endregion base.OnRowDataBound(e);
}
用自带的,太费事。