GridView做了一个判断后不分页了

feng1021 2008-03-21 10:50:26
GridView有两个绑定,一个是在页面加载的时候绑定显示GridViewDataBind();第二个是在输入查询条件后点查询按钮btnBind(),又绑定一次查询后的信息,可是在点第二页的时候,GridView又重新绑定了GridViewDataBind();所以我在GridView1_PageIndexChanging事件下做了一个判断,但是判断过后分页就不好用了,把判断去掉就好用,大家帮我看看是不是代码写的有问题

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridViewDataBind();
}
}
public void GridViewDataBind()
{
ViewState["m"] = 0;
DbCommand dbcom = db.GetSqlStringCommand("select * from Customer");
GridView1.DataSource = db.ExecuteDataSet(dbcom).Tables[0];
GridView1.AllowPaging = true;
GridView1.PageSize = 2;
GridView1.DataBind();

}
protected void btnSrc_Click(object sender, EventArgs e)
{
ViewState["m"] = 1;
btnBind();

}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
if (ViewState["m"].Equals("0"))
{

GridViewDataBind();
}
else if (ViewState["m"].Equals("1"))
{

btnBind();
}
//GridViewDataBind();

}
...全文
112 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxxyz 2008-03-21
  • 打赏
  • 举报
回复
学习..
feng1021 2008-03-21
  • 打赏
  • 举报
回复
用sunrain_yingxi 的方法解决了,谢谢,结贴
jicheng1014 2008-03-21
  • 打赏
  • 举报
回复
上次在微软新闻中文我也问了相应的问题,

上面的工程师是这样说的 SqlDataSource的SelectedCommand 改变后只在当前有用

之后你点翻页的时候,那就又重新绑定成原来的SelectedCommand 当然页码相关信息还是保留

他建议说是设置个Session["SelectSql"] 绑定修改的Sql语句,之后在页面刷新判断是不是isPostBack

如果是,则读取Session["SelectSql"],重新绑定

至于为什么bind无效 我也不是很清楚,那个工程师也没解释。。。。
sunrain_yingxi 2008-03-21
  • 打赏
  • 举报
回复
我一般都是按下面的方法做的,第一次綁定和查詢后的綁定放在一個里面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridViewDataBind();
}
}

public void GridViewDataBind()
{
string strSql="select * from Customer where 1=1";
//下面是查詢條件
if(tbA.text!="")
{
strSql+=" and s...";
}
DbCommand dbcom = db.GetSqlStringCommand(strSql);
GridView1.DataSource = db.ExecuteDataSet(dbcom).Tables[0];
GridView1.AllowPaging = true;
GridView1.PageSize = 2;
GridView1.DataBind();

}
protected void btnSrc_Click(object sender, EventArgs e)
{
GridViewDataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridViewDataBind();

}

yb1124 2008-03-21
  • 打赏
  • 举报
回复
在btnBind()中加入GridView1.AllowPaging = true;
试一试
nihaimeiyoudenglu 2008-03-21
  • 打赏
  • 举报
回复
btnBind();这个代码呢
zpcoder 2008-03-21
  • 打赏
  • 举报
回复
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
if (ViewState["m"].Equals("0"))
{

GridViewDataBind();
}
else if (ViewState["m"].Equals("1"))
{

btnBind();
}
//GridViewDataBind();

}


你的这个 if 好像有点问题.(第二个if 少了 else 这是不推陈的)
如果viewstate[m] 只有 0 和 1 这两种情况的话.就把 else 后面的个 if 整个去掉.只留言下 else
如果是多个就再加else

应该是如下构结


if (bool)
{//------
}
else if (bool)
{
//------
}
else
{
//-------------
}


if (bool)
{//------
}
else
{
//------
}

62,039

社区成员

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

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

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

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