一个关于DataGrid绑定的问题.

meiyan11 2003-09-30 09:05:21
private void Button1_Click(object sender, System.EventArgs e)
{
string seleString="select st_id 编号,st_name 姓名,st_zy 专业,st_ds 导师 ,st_date 时间 from tab_st where st_zy="+"'"+DropDownList2.SelectedValue+"'";
SqlConnection1=new System.Data.SqlClient.SqlConnection(conString);
SqlDataAdapter1=new System.Data.SqlClient.SqlDataAdapter(seleString,SqlConnection1);
DataSet1=new DataSet();
SqlDataAdapter1.Fill(DataSet1,"tab_st");
DataGrid1.DataSource=DataSet1.Tables["tab_st"].DefaultView;
DataGrid1.DataMember="tab_st";

SqlConnection1.Open();
DataGrid1.DataBind();

SqlConnection1.Close();

}


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

}

不难看出,上面实现了两个方法,第一个是点击Button1时,以DropDownList2.SelectedValue为参数,查询数据库, 查询结果与DataGrid绑定.下面的方法实现分页.问题来了:我查询的结果有几十条,但我的DataGrid每页只显示10条,当我分页时,DataGrid里就什么都没有了,结果不能与数据绑定.
请高手帮忙,真心感谢,绝对给分.
...全文
26 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiyan11 2003-09-30
  • 打赏
  • 举报
回复
问题又来了:
点击分页后,比如说到第二页,再改变DropDownList2的值,然后再点击查询按钮就报错了.

"无效的CurrentPageIndex值.它必须大于等于0且小于PageCount."
ffj521 2003-09-30
  • 打赏
  • 举报
回复
完整正確的做法及代碼為:(去除你代碼中不必要的語句)
把自动分页设为true;在分页事件把数据源再绑定一次,一定要重设数据源。
protected void BindGrid()
{
string seleString="select st_id 编号,st_name 姓名,st_zy 专业,st_ds 导师 ,st_date 时间 from tab_st where st_zy="+"'"+DropDownList2.SelectedValue+"'";
SqlConnection1=new System.Data.SqlClient.SqlConnection(conString);
SqlDataAdapter1=new System.Data.SqlClient.SqlDataAdapter(seleString,SqlConnection1);
DataSet1=new DataSet();
SqlDataAdapter1.Fill(DataSet1,"tab_st");
DataGrid1.DataSource=DataSet1.Tables["tab_st"].DefaultView;
DataGrid1.DataBind();
}

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

private void DataGrid1_PageIndexChanged(object source,System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}
chxzll 2003-09-30
  • 打赏
  • 举报
回复
还有,你用DataAdapter加DataSet的时候没必要手动开关数据连接,DataAdapter是自动开关数据库连接的,所以你
SqlConnection1.Open();
DataGrid1.DataBind();
SqlConnection1.Close();
其中的的
SqlConnection1.Open();
SqlConnection1.Close();
这两句话可以去掉
chxzll 2003-09-30
  • 打赏
  • 举报
回复
分页后需要重新添充,重新绑定
最好将绑定代码放入一个函数中
protected void BindGrid()
{
string seleString="select st_id 编号,st_name 姓名,st_zy 专业,st_ds 导师 ,st_date 时间 from tab_st where st_zy="+"'"+DropDownList2.SelectedValue+"'";
SqlConnection1=new System.Data.SqlClient.SqlConnection(conString);
SqlDataAdapter1=new System.Data.SqlClient.SqlDataAdapter(seleString,SqlConnection1);
DataSet1=new DataSet();
SqlDataAdapter1.Fill(DataSet1,"tab_st");
DataGrid1.DataSource=DataSet1.Tables["tab_st"].DefaultView;
DataGrid1.DataMember="tab_st";

SqlConnection1.Open();
DataGrid1.DataBind();
SqlConnection1.Close();
}
然后这样调用
private void Button1_Click(object sender, System.EventArgs e)
{
BindGrid();
}

private void DataGrid1_PageIndexChanged(object source,System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}
流梓 2003-09-30
  • 打赏
  • 举报
回复
楼主,绑定DataGrid的方法应是公共方法。如你使用的DataGrid1.DataBind()为DataGrid的绑定方法。

翻面:
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex; //翻页
}
应该公共方法为:
private void BindGrid() //绑定DataGird控件方法
{
string strSql="select * from hr_insurance";
inSet=Conn.method_Reader(strSql,Conn.SqlConn); //读取数据库数据
Session["inview"]=inSet; //存储数据在Session对象中
}

在dataGrid的事件
private void DataGrid1_PreRender(object sender, System.EventArgs e)
{
//绑定数据源
this.DataGrid1.DataSource=(DataSet)Session["inview"];
this.DataGrid1.DataBind();
}
wolve 2003-09-30
  • 打赏
  • 举报
回复
把自动分页设为true。在分页事件把数据源在绑定一次,一定要重设数据源。
如果是小数据量的数据,你可以存在page.viewstate中
meiyan11 2003-09-30
  • 打赏
  • 举报
回复
楼上说的方法不行啊
acewang 2003-09-30
  • 打赏
  • 举报
回复
DataGrid1.CurrentPageIndex = e.NewPageIndex;
//把数据再绑定一遍
DataGrid1.DataSource=//
DataGrid1.DataBind();

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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