Невозможно сохранить элементы ListBox в отсортированном порядке - PullRequest
0 голосов
/ 20 января 2012

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

    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();
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 20 января 2012

ASP .Net не знает о том, что элементы в ListBox были изменены на стороне клиента. Возможно, вы используете метод jQuery.sortable для сортировки элементов списка. Вам нужно вызвать sorttable с опцией «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
0 голосов
/ 20 января 2012

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

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