SqlConnection myConn = new SqlConnection(strConnection); SqlCommand myCmd = new SqlCommand("sp_AnswerList", myConn);
myCmd.CommandType=CommandType.StoredProcedure; SqlParameter spParamenter; //问题ID
spParamenter = myCmd.Parameters.Add("@QID", SqlDbType.Int,4);
myCmd.Parameters["@QID"].Value = Convert.ToInt32(Request.Params["QID"]);
//每页行数
spParamenter = myCmd.Parameters.Add("@pagesize", SqlDbType.Int,4);
myCmd.Parameters["@pagesize"].Value = 3; //显示第几页
spParamenter = myCmd.Parameters.Add("@pageindex", SqlDbType.Int,4);
myCmd.Parameters["@pageindex"].Value = this.AspNetPager1.CurrentPageIndex ;
spParamenter = myCmd.Parameters.Add("@docount", SqlDbType.Int,4);
myCmd.Parameters["@docount"].Value = 0;
try
{
myConn.Open(); SqlDataReader dr = myCmd.ExecuteReader(); this.RepeaterAnswer.DataSource = dr;
this.RepeaterAnswer.DataBind(); dr.Close();
}
catch (SqlException error)
{
Page.RegisterStartupScript("", "<script>alert('" + error.Message + "!');</script>");
}
finally
{
myConn.Close();
}
以上代码是一个函数,调用它来显示每一页的内容,由存储过程返回记录集,
现在返回的记录比如有6条,绑定后却是把第一条重复了6遍,我知道虽然reader是向前的,
但是这样应该是可以绑定成功的,以前也弄过,为什么这里不行了呢,高手给看看
SqlDataReader dr = myCmd.ExecuteReader();
this.RepeaterAnswer.DataSource = dr;
this.RepeaterAnswer.DataBind();
dr.Close(); 我上面这样写到底为什么总是显示第一条呢?把第一条反复显示,郁闷了
难道必须用dataset吗,用那个太慢了
没绑过datareader,呵呵.还真不清楚.
谁给解释一下哦
我在查询分析器里执行这个存储过程看了,结果是没有问题的,
但是绑定后的显示结果,记录数是对的,但是都是在重复第一条
repeart本身就是一个绑定控件,又没有行的概念
因为在我的印象中这样应该是可以的,而且我的数据只是查询,也用不着绑定式的分页,
用dataset太浪费了,速度也比reader慢的多,我想该用datareader的时候还是应该用这个请高手指点一下,我在网上找了很长时间,都没有讲这个事情的,谢谢大家了