郁闷,我写DataGrid的分页总是慢一个节拍.

Naola2001 2004-01-02 10:51:51
好像这个问题在MS的DATAGRID中也存在,原来有人问过的,不知道怎么解决的了.

即, 点 2,出现,第一页数据,点3,出第2页数据,点4出第3页数据,点6出第4页数据.

设置断点跟踪了一下.
是由于Page的 PageLoad 中绑定的代码先执行了.
我在控件中 RaisePostBackEvent 中设置的显示当前页的属性是后执行的,所以出现上面的情况.

怎么解决呢.我是WEB自定义控件.

...全文
32 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inyoureyes 2004-01-03
  • 打赏
  • 举报
回复
恐怕是你重新帮定datagrid的时机不对,分页完成后立即重新帮定,在page_load中的帮定加上ispostback的判断,应该没问题
caoit 2004-01-03
  • 打赏
  • 举报
回复
在PageLoad代码中加上

if (!Page.IsPostBack)
{
绑定datagrid;
}

翻页事件中:
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=(int)e.NewPageIndex;
绑定datagrid;


}
guying999 2004-01-02
  • 打赏
  • 举报
回复
你这样做吧:
1,先写一个和DataGrid绑定内容的函数
在页面第一次绑定数据时放在page_load 里 ,并且用if (!Page.IsPostBack)
调用该函数
2,在点分页时再重新调用该函数
xiaomaolover 2004-01-02
  • 打赏
  • 举报
回复
if (!IsPostBack)
{
帮定代码;
}

改变页面之后
再进行

帮定

你没有帮定吧??
Naola2001 2004-01-02
  • 打赏
  • 举报
回复
问题是 RaisePostBackEvent 是WEB自定义控件中处理的,不能再Bind一次啊
兵哥笑而不语 2004-01-02
  • 打赏
  • 举报
回复
你这样做吧:
1,在页面第一次显示时的数据放在page_load 里 ,并且用if (!Page.IsPostBack)
{}让postback之后不运行
2,分页和别的重新邦定操作都在相应的函数中重新绑定 ,这样你分页就总是成功的
ponycsdn 2004-01-02
  • 打赏
  • 举报
回复
private void EditionArticleCatalogueDataBind()
{
ArticleQuery editionArticleGet = new ArticleQuery();
dgEditionArticleCatalogue.DataSource = editionArticleGet.GetEditionArticle(Convert.ToInt16(Request["EditionID"]));
dgEditionArticleCatalogue.DataBind();

Editiones AllEditionGet = new Editiones();
dgEditiones.DataSource = AllEditionGet.GetAllEditiones();
dgEditiones.DataBind();

ShowStartsPage();
}

// 显示第几页、共几页
private void ShowStartsPage()
{
pageCount.Text = Convert.ToString(dgEditionArticleCatalogue.PageCount);
pageNumber.Text = Convert.ToString(dgEditionArticleCatalogue.CurrentPageIndex+1);
}

private void dgEditionArticleCatalogue_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
dgEditionArticleCatalogue.CurrentPageIndex = e.NewPageIndex;
EditionArticleCatalogueDataBind();
}

private void first_Click(object sender, System.EventArgs e)
{
dgEditionArticleCatalogue.CurrentPageIndex = 0;
EditionArticleCatalogueDataBind();
}

private void next_Click(object sender, System.EventArgs e)
{
if (dgEditionArticleCatalogue.CurrentPageIndex < dgEditionArticleCatalogue.PageCount -1)
{
dgEditionArticleCatalogue.CurrentPageIndex++;
EditionArticleCatalogueDataBind();
}
}

private void prev_Click(object sender, System.EventArgs e)
{
if (dgEditionArticleCatalogue.CurrentPageIndex > 0)
{
dgEditionArticleCatalogue.CurrentPageIndex--;
EditionArticleCatalogueDataBind();
}
}

private void last_Click(object sender, System.EventArgs e)
{
dgEditionArticleCatalogue.CurrentPageIndex = dgEditionArticleCatalogue.PageCount-1;
EditionArticleCatalogueDataBind();
}

private void gotoPage_Click(object sender, System.EventArgs e)
{
try
{
int pageNumber = Convert.ToInt16(pageNum.Text)-1;
if (pageNumber >= 0 && pageNumber < dgEditionArticleCatalogue.PageCount)
{
dgEditionArticleCatalogue.CurrentPageIndex = pageNumber;
}
EditionArticleCatalogueDataBind();
}
catch
{
pageNum.Text = "输入错误";
}
}
我得编写方法。
tiannet 2004-01-02
  • 打赏
  • 举报
回复
if (!Page.IsPostBack)
表示只执行一次。
yaotiebing 2004-01-02
  • 打赏
  • 举报
回复
Page的 PageLoad
if not ispostback then
end if


点分页时 从新帮定
skeleton11 2004-01-02
  • 打赏
  • 举报
回复
在PageLoad代码中加上
if (!Page.IsPostBack)
{
PageLoad的代码;
}
senzz 2004-01-02
  • 打赏
  • 举报
回复
在PageLoad代码中加上

if (!Page.IsPostBack)
{
绑定datagrid;
}

62,047

社区成员

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

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

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

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