请问DataGrid查询后如何再分页?

helloqiqi 2003-09-14 10:43:09
请帮忙看下代码,为什么查询之后分页的功能就不对了

private void Page_Load(object sender, System.EventArgs e)
{

SqlConnection conn=new SqlConnection("server=QIQI;database=pubs;uid=sa;pwd=1");
SqlDataAdapter Adapter=new SqlDataAdapter("select * from authors",conn);
DataSet ds=new DataSet();
Adapter.Fill(ds);
DataGrid1.DataSource=ds;
DataGrid1.DataBind();

}


private void Button1_Click(object sender, System.EventArgs e)
{
SqlConnection conn=new SqlConnection("server=QIQI;database=pubs;uid=sa;pwd=1");
SqlDataAdapter Adapter=new SqlDataAdapter("select * from Authors where state='"+this.TextBox1.Text+"'",conn);
DataSet ds=new DataSet();
Adapter.Fill(ds);
DataGrid1.DataSource=ds;
DataGrid1.DataBind(); }

private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
this.DataGrid1.DataBind();
}
}
}
...全文
32 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloqiqi 2003-09-15
  • 打赏
  • 举报
回复
这段已经可以通过编译了,语法没问题了,可是页面打开什么也没有。

private void Page_Load(object sender, System.EventArgs e)
{

if (!IsPostBack)
{
string sql;
sql="select * from Authors ";
ViewState["sql"]=sql;
CreateData(sql);
DataGrid1.DataBind();
}

}


private void Button1_Click(object sender, System.EventArgs e)
{

string sql;
sql="select * from Authors where state='"+this.TextBox1.Text+"'";
ViewState["sql"]=sql;
DataGrid1.CurrentPageIndex=0;
CreateData(sql);
DataGrid1.DataBind();
}

private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
CreateData(ViewState["sql"].ToString());
}

private void InitializeComponent()
{

}

private void CreateData(string sql)
{
SqlConnection conn=new SqlConnection("server=QIQI;database=pubs;uid=sa;pwd=1");
SqlDataAdapter Adapter=new SqlDataAdapter(sql,conn);
DataSet ds=new DataSet();
Adapter.Fill(ds);
DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}
tonghaibinfc 2003-09-15
  • 打赏
  • 举报
回复
把你的代码贴出来看看,我有vb的代码
helloqiqi 2003-09-15
  • 打赏
  • 举报
回复
都已经搞了一天了,还是失败,谁给我一个完整的代码吧,我快崩溃了
workforwork 2003-09-15
  • 打赏
  • 举报
回复
在page_load中:
if not ispostback then
'不用参数的绑定
else
'用dataview参数化的带参绑定(也可不用dataview,带参绑定就可以)
end if

就可以了。
tonghaibinfc 2003-09-15
  • 打赏
  • 举报
回复
我是在 jjcccc() 的代码中改了点,你看看是什么问题,

方法是这样的,代码你自己改吧,
helloqiqi 2003-09-15
  • 打赏
  • 举报
回复
谢谢tonghaibingfc,我试了你的代码,可能我是用c#的,里面问题还是很多啊,不知道有没有c#的代码呢?
tonghaibinfc 2003-09-15
  • 打赏
  • 举报
回复
上面的代码已经写好了,你直接试试
tonghaibinfc 2003-09-15
  • 打赏
  • 举报
回复
viewstate("sql")=sql;

这样就可以了,我用vb,c#不知有没有区别,要是有问题你看下帮助
helloqiqi 2003-09-15
  • 打赏
  • 举报
回复
server=QIQI是我设定的sqlserver的服务器名
AllonXm 2003-09-15
  • 打赏
  • 举报
回复
("server=QIQI;database=pubs;uid=sa;pwd=1");中server=QIQI的QIQI是根据什么来设置的?
很多例子上是用localhost,mysqlserver之类的,在具体的环境中是什么来设置的?
3xs
helloqiqi 2003-09-15
  • 打赏
  • 举报
回复
那么请问怎么用viewstate保存sql语句呢?我刚学.net,没做过这个,能写个代码给我吗?谢谢了!
tonghaibinfc 2003-09-15
  • 打赏
  • 举报
回复
private void Page_Load(object sender, System.EventArgs e)
{

if (!IsPostBack)
{
string sql;
sql="select * from Authors ";
viewstate("sql")=sql;
CreateData();
DataGrid1.DataBind();
}

}


private void Button1_Click(object sender, System.EventArgs e)
{

string sql;
sql=("select * from Authors where state='"+this.TextBox1.Text+"'";
viewstate("sql")=sql;
datagrid1.currentpageindex=0;
CreateData(sql);
DataGrid1.DataBind();
}

private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
CreateData(viewstate("sql"));
}

private void CreateData(string sql)
{
SqlConnection conn=new SqlConnection("server=QIQI;database=pubs;uid=sa;pwd=1");
SqlDataAdapter Adapter=new SqlDataAdapter(sql,conn);
DataSet ds=new DataSet();
Adapter.Fill(ds);
DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}


没用过c#,你看看语法有没有错,但这样应该是没问题的
tonghaibinfc 2003-09-15
  • 打赏
  • 举报
回复
给你个建议,你应该将执行查询的那些语句单独写到一个过程中,sql语句已参数形式传进去

在调用前将sql语句保存,比如用viewstate,这样代码也可以重用,只要sql语句参数传的是一样的,就不会出现

快乐王子的那个,没有查询之前按下一页是正常的,但是查询之后再按下一页,就又变成将所有的数据都拿出来再分页了。

在改变sql语句时,将datagrid.currentpageindex设为0,就不会出现

jjcccc的那个,没有查询之前按下一页出现错误:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。但是查询之后是可以将查询结果分页的。



helloqiqi 2003-09-15
  • 打赏
  • 举报
回复
jjcccc的那个我又试了试,这次我完全是用他的代码可还是不行,要是我输入一个数据,表里没有与之匹配的时候,还是出现:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount的错误。
helloqiqi 2003-09-15
  • 打赏
  • 举报
回复
谢谢这么多朋友的帮忙!
快乐王子的那个,没有查询之前按下一页是正常的,但是查询之后再按下一页,就又变成将所有的数据都拿出来再分页了。
jjcccc的那个,没有查询之前按下一页出现错误:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。但是查询之后是可以将查询结果分页的。
jpyc 2003-09-15
  • 打赏
  • 举报
回复
没问题呀!

http://218.56.11.178:8009/

所有类的帖子都是按类别查询出来的,分页显示
Nicholasqpl 2003-09-14
  • 打赏
  • 举报
回复
在DataGrid1_PageIndexChanged()里面加一个你查询后的DataSet的对象
然后绑定到你的dataGrid上
你的明白?
pengcheng 2003-09-14
  • 打赏
  • 举报
回复
up
caoit 2003-09-14
  • 打赏
  • 举报
回复
把Page_Load里那些语句包含在 
if(!Page.IsPostback)
{
}
jjcccc 2003-09-14
  • 打赏
  • 举报
回复
改成这样:
private void Page_Load(object sender, System.EventArgs e)
{

if (!IsPostBack)
{
CreateData();
DataGrid1.DataBind();
}

}


private void Button1_Click(object sender, System.EventArgs e)
{
CreateData();
DataGrid1.DataBind();
}

private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
CreateData();
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
this.DataGrid1.DataBind();
}

private void CreateData()
{
SqlConnection conn=new SqlConnection("server=QIQI;database=pubs;uid=sa;pwd=1");
SqlDataAdapter Adapter=new SqlDataAdapter("select * from Authors where state='"+this.TextBox1.Text+"'",conn);
DataSet ds=new DataSet();
Adapter.Fill(ds);
DataGrid1.DataSource=ds;
}
加载更多回复(2)

62,025

社区成员

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

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

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

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