asp.net gridview сортировка без перепривязки данных - PullRequest
0 голосов
/ 18 ноября 2008

Я пытаюсь сделать 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();
    }}}

Этот код просто связывает данные, когда они не являются обратной передачей, в виде сетки включено состояние просмотра. При нажатии на заголовки столбцов происходит обратная передача, но сортировка не происходит. Если у кого-то есть простое решение для этого, пожалуйста, дайте мне знать или, что еще лучше, сортировка ajax, которая позволит избежать обратной передачи, будет еще лучше. Набор данных является относительно небольшим, однако запрос занимает много времени, поэтому я не хотел бы запрашивать каждый вид.

Ответы [ 3 ]

4 голосов
/ 18 ноября 2008

Если вы не разбираете результаты по страницам и просто читаете, то что-то вроде плагина jquery tablesorter будет быстрым и простым решением. Я использовал это в таблицах до 1400 строк и отлично работает, хотя ~> несколько сотен, вероятно, лучше на медленных путах.

Если вид сетки можно редактировать, то проверка события / ввода aspnet может привести к появлению пустышки, если вы не пройдете надлежащую регистрацию клиентских скриптов и т. Д.

0 голосов
/ 18 ноября 2008

В вашем случае я бы использовал SqlDataAdapter и заполнил DataTable. Затем поместите DataTable в переменную Session. Когда GridView выполняет сортировку, проверьте, существует ли переменная Session. Если этого не произойдет, заполните таблицу данных еще раз. Наконец, отсортируйте DataTable, используя DataView, и заново свяжите GridView с DataView.

0 голосов
/ 18 ноября 2008

Вы можете попытаться сохранить данные в состоянии просмотра (или в кэше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...