自定义控件中,继承gridview,如何去掉viewstate而不会引起功能的问题?高分!!!!高手以入

mint 2007-11-25 11:25:21
自定义扩展了一个gridview控件,其代码如下一个:
namespace CtbujxLib
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:JAGridView runat=server></{0}:JAGridView>")]
public class JAGridView : Anthem.GridView, INamingContainer
{
//翻页按钮
private Anthem.LinkButton lbtnFirst;
private Anthem.LinkButton lbtnPrev;
private Anthem.LinkButton lbtnNext;
private Anthem.LinkButton lbtnLast;
//当前页数 总页数 每页记录数 总记录数
private Anthem.Label lbPageIndex;
private Anthem.Label lbPageCount;
private Anthem.Label lbPageSize;
private Anthem.Label lbRecordCount;
//记录总数
private int recordCount;


private Anthem.TextBox txtbGoPageIndex;
private Anthem.Button btnGo;


//初始化GridView参数
protected override void OnLoad(EventArgs e)
{
this.AllowPaging = true;
this.PagerSettings.Visible = true;

base.OnLoad(e);
}
protected override void InitializePager(GridViewRow row, int columnSpan, PagedDataSource pagedDataSource)
{
//获取记录总数
recordCount = pagedDataSource.DataSourceCount;
//初始化 导航按钮
lbtnFirst = new Anthem.LinkButton();
lbtnFirst.ID = "lbtnFirst";
lbtnFirst.Text = "首页";
lbtnFirst.CommandName = "First";
lbtnFirst.Command += new CommandEventHandler(lbtn_Command);
lbtnPrev = new Anthem.LinkButton();
lbtnPrev.ID = "lbtnPrev";
lbtnPrev.Text = "上一页";
lbtnPrev.CommandName = "Prev";
....
SetPagerStatus();
}

protected void btnGo_Onclick(object sender, CommandEventArgs e)
{
int GoPageIndex;
try
{
GoPageIndex = int.Parse(txtbGoPageIndex.Text.Trim());
if (GoPageIndex <= PageCount && GoPageIndex > -1)
{
PageIndex = GoPageIndex-1;//默认的内容比那个要多
}
}
catch(Exception e1)
{
//出错,忽略;
}


}
//点击按钮时 进行翻页
void lbtn_Command(object sender, CommandEventArgs e)
{
switch (e.CommandName)
{
case "First":
{
PageIndex = 0;
break;
}
case "Prev":
{
if (PageIndex > 0)
{
PageIndex--;
}
break;
}
case "Next":
{
if (PageIndex + 1 < PageCount)
{
PageIndex++;
}
break;
}
case "Last":
{
PageIndex = PageCount - 1;
break;
}


}
}
//设置分页状态
public void SetPagerStatus()
{
//如果没记录则不显示
if (PageCount == 0)
{
this.Visible = false;
return;
}
//第一页
if (PageIndex == 0)
{
lbtnFirst.Enabled = false;
lbtnPrev.Enabled = false;
lbtnNext.Enabled = true;
lbtnLast.Enabled = true;
}
//最后一页
else if (PageIndex == PageCount - 1)
{
lbtnFirst.Enabled = true;
lbtnPrev.Enabled = true;
lbtnNext.Enabled = false;
lbtnLast.Enabled = false;
}
//中间页
else
{
lbtnFirst.Enabled = true;
lbtnPrev.Enabled = true;
lbtnNext.Enabled = true;
lbtnLast.Enabled = true;
}

...
}
}
}
//此代码参照:http://www.cnblogs.com/jecray/archive/2007/08/16/851419.html

此代码使用了anthem控件来支持无刷,不过,去掉所有的anthim能正确工作。但gridview控件会产生大量的viewstate代码,如果只做展示,则不需要这些东西。能不能去掉viewstate呢?
尝试直接改变这个gridview的viewstate,不能正确工作。
尝试更变的代码如下:
//初始化GridView参数
protected override void OnLoad(EventArgs e)
{
this.AllowPaging = true;
this.PagerSettings.Visible = true;

base.OnLoad(e);
//初始化GridView参数
base.EnableViewState = false;//禁用viewstate,禁用后,其提交按钮无法使用!!!!!??????
}
禁用viewstate后,点“下一页”、“上一页”等按钮再也没有反应。为什么?如何解决?
...全文
423 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sclayer 2011-11-17
  • 打赏
  • 举报
回复
base.EnableViewState = this.EnableViewState;
gxtiou 2007-11-25
  • 打赏
  • 举报
回复
禁用掉viewstate
gridview控件在初始化之后在load之前就不执行数据的绑定操作了。而上下页的实现必需有当前的绑定数据才行。
jy02568489 2007-11-25
  • 打赏
  • 举报
回复
貌似viewstate你是不能去掉的,如果强制性的删掉viewstate,将导致页面状态无法保存!
如果楼主觉得viewstate占用太多页面资源的话,可以考虑将页面的viewstate压缩掉!
详细代码可以参考www.cnblogs.com里的资料!
suyiming 2007-11-25
  • 打赏
  • 举报
回复
你做的是分页控件吧
spverain 2007-11-25
  • 打赏
  • 举报
回复
我顶啊....高手 帮下我撒....很郁闷呐 没人领着自学很郁闷....
seulty 2007-11-25
  • 打赏
  • 举报
回复
低手顶~~

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧