2012-01-19 2 views
-1

На моей странице веб-форм .NET у меня есть ListBox и некоторый jQuery, который позволяет сортировать элементы. Я выбираю несколько элементов, а затем перебираю их для сохранения в моей базе данных. Я хочу сохранить порядок сортировки предметов, однако я не могу заставить его работать. Мой отделенный код показан:Невозможно сохранить ListBox Элементы в отсортированном порядке

protected void session_DetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) 
    { 
     panel_SqlDataSource.Delete(); 
     ListBox panel_ListBox = session_DetailsView.FindControl("panel_ListBox") as ListBox; 
     int so = 0; 
     for (int i=0; i < panel_ListBox.Items.Count; i++) 
     { 
      if (panel_ListBox.Items[i].Selected == true) 
      { 
       so++; 
       panel_SqlDataSource.InsertParameters["presenterID"].DefaultValue = panel_ListBox.Items[i].Value; 
       panel_SqlDataSource.InsertParameters["sortOrder"].DefaultValue = so.ToString(); 
       panel_SqlDataSource.Insert(); 
      } 
     } 
    } 
+0

Забудьте базу данных на данный момент, вы должны просто проследите вывод, чтобы выяснить, происходит ли то, что вы ожидаете. Тогда будьте беспокойтесь о базе данных. – demoncodemonkey

+1

Также вставьте код jQuery ... – demoncodemonkey

ответ

0

Да так что ваш заказ изменяется на стороне клиента, вероятно, не будет влиять на порядок, в котором он находится на сервере, который, вероятно, будет определен где-то в ViewState. Ваши элементы управления просто вернутся, поскольку они были показаны первоначально. Вам нужно как-то отслеживать порядок вещей - вытащить его из переменных формы или что угодно.

0

ASP .Net не осведомлен о том, что элементы в ListBox были изменены на стороне клиента. Вероятно, вы используете метод jQuery.sortable для сортировки элементов списка. Вам нужно вызвать sortable с параметром «serialize» и сохранить значение в скрытом поле. Когда вы публикуете форму, вы читаете значение этого скрытого поля и сохраняете новый порядок в базе данных.

Таким образом, для образца, если объекты с идентификаторами 1, 2, 3 имеют новый порядок 2, 3, 1 затем создать методы обновления/вставки, как это:

update tbl set sortOrder = 1 where presenterId = 2 
update tbl set sortOrder = 2 where presenterId = 3 
update tbl set sortOrder = 3 where presenterId = 1