ストアドプロシージャをデータソースとして使用するグリッドビューをソート可能にしようとしていますが、これを達成するために毎回クエリを再実行したくありません。現在のコードを機能させる方法は次のとおりです。
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();
}}}
このコードは、ポストバックでない場合にデータをバインドするだけで、グリッドビューでビューステートが有効になっています。列ヘッダーを押すと、ポストバックが発生しますが、並べ替えは発生しません。誰かがこれに対する簡単な修正を持っている場合は、私に知らせてください。ポストバックを回避する ajax ソートがさらに良いでしょう。データセットは比較的小さいですが、クエリに時間がかかるため、並べ替えごとに再クエリを実行したくありません。