我正在尝试使 gridview 可排序,它使用存储过程作为数据源,我不希望它每次都重新运行查询来实现这一点。我如何让它工作我当前的代码是:
protected override void OnPreRender(EventArgs e)
{
if (!IsPostBack)
{
SqlCommand cmd2 = new SqlCommand("SR_Student_Course_List", new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["RDCV2ConnectionString"].ConnectionString));
try
{
cmd2.CommandType = CommandType.StoredProcedure;
cmd2.CommandTimeout = 120;
cmd2.Parameters.Add("student_id", SqlDbType.Char, 11).Value = student;
cmd2.Connection.Open();
grdCourses.DataSource = cmd2.ExecuteReader();
grdCourses.DataSourceID = string.Empty;
grdCourses.DataBind();
} finally
{
cmd2.Connection.Close();
cmd2.Connection.Dispose();
cmd2.Dispose();
}}}
此代码仅在不是回发时绑定数据,gridview 启用了视图状态。在按下列标题时,会发生回发,但不会发生排序。如果有人对此有一个简单的解决方法,请告诉我,甚至更好的 ajax 排序可以避免回发会更好。数据集相对较小,但是查询需要很长时间,这就是为什么我不想在每个排序上重新查询。