de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Orange Kid
Orange Kid
Вопрос

Поддержание позиции позиции после редактирования строки в списке ... должен ли я даже попробовать?

Я привязываю ASP.NET ListView к массиву объектов, отсортированных по алфавиту по имени. После редактирования элемента DataSource снова устанавливается и вызывается DataBind. Если имя изменилось, элемент, который вы только что отредактировали, возможно, переместился, возможно, на другую страницу.

Например; вы просто переименовали Хот-дог в колбасу, так что Колбаса перемещалась после завершения ItemUpdating.

--- OLD LIST ---   --- NEW LIST ---
    Hamburger          Hamburger
    Hot Dog______      Pizza
    Pizza        |_____Sausage

Можно ли ожидать такого поведения от формы? Когда вы редактируете строку, вы должны увидеть эту строку после ее сохранения? Должна ли она находиться в том же положении? Должен ли я отображать только запись, которую вы только что отредактировали после сохранения?

Что касается технической стороны сохранения предыдущего порядка после сохранения и, возможно, изменения порядка;

Я знаю , почему это происходит. Я ищу идеи избежать этого.

Я думаю о том, чтобы удалить оба элемента управления EditItemTemplate в ItemTemplate и установить видимость элементов управления только для чтения/редактирования на основе ListView EditIndex.

Это кажется выполнимым, но мне интересно, есть ли у вас прекрасные люди какие-либо другие идеи.

2 2011-10-27T18:50:43+00:00 3
Orange Kid
Orange Kid
Редактировал вопрос 1-го ноября 2011 в 4:42
Программирование
listview
user-interface
asp.net
Mitchel Sellers
27-го октября 2011 в 7:03
2011-10-27T19:03:32+00:00
Дополнительно
Источник
Редактировать
#56791611

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

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

2
0
jwiscarson
1-го ноября 2011 в 3:10
2011-11-01T15:10:21+00:00
Дополнительно
Источник
Редактировать
#56791612

Когда мои пользователи работают с наборами данных в GridView s, я всегда заказываю свои данные по идентификатору базы данных, чтобы убедиться, что позиция каждого элемента данных остается неизменной. Не зная, как выглядит ваш источник данных, трудно сказать, можете ли вы избежать или изменить повторный сортировку.

Однако ( это чистая спекуляция, так как я не знаю, какие данные вы работаете с ), если вы сохранили исходный источник данных в сеансе (I ' m, предполагая, что вы возвращаетесь в базу данных и захватываете данные после отправки), и у него есть какой-то упорядоченный идентификатор, тогда вы можете сделать что-то вроде:

void ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
    List foodDataSource = Session["dataSource"];
    ListItem editedFoodItem = foodListView.Items[e.ItemIndex];

    MyFood newFood = new MyFood(
        ((HiddenField)editedFoodItem.FindControl("foodId")).Value,
        ((Label)editedFoodItem.FindControl("foodName")).Text
    );

    foodDataSource.Where(k => k.foodId == newFood.foodId).foodName = newFood.foodName;

   //I'm guessing that you'll save somewhere in here,
   //rather than do an update-once-style commit to the database when the user clicks a save button.

    foodListView.DataSource = foodDataSource;
    foodListView.DataBind();
}

Это предполагает, что вы скопировали свой ItemTemplate , чтобы включить определенный WebControls / HtmlControls . Это неудобно, и этот код необходимо реорганизовать для карантина неприятного кода, такого как вызов FindControl в отдельной функции, но это довольно близко к тому, что я делаю, когда мои пользователи обновляют данные в GridView , а затем сохраните их изменения в базе данных.

Alternatively, you could keep your current save methods the same, and just add something like:

void ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
    ListItem editedFoodItem = foodListView.Items[e.ItemIndex];
    Label foodNameLabel = ((Label)editedFoodItem.FindControl("foodName"));

    foodNameLabel.BackColor = System.Drawing.Color.LightGreen;

   //Saving in here, somewhere.

   //I'm not totally positive that DisplayIndex is the correct property here.
    foodListView.Items.Where(k => k.DisplayIndex != e.ItemIndex).BackColor = System.Drawing.Color.White;
}

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

1
0
Dylan Vester
4-го ноября 2011 в 2:02
2011-11-04T02:02:52+00:00
Дополнительно
Источник
Редактировать
#56791613

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

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

В оболочке орехов каждый раз, когда сетка привязана, я заказываю список данных по выбору пользователя (или сортировку по умолчанию), но прямо перед привязкой к сетке проверяю, должен ли порядок быть сохранен, и в этом случае , Я извлекаю последний порядковый номер из DataKeyArray сетки и связывает эти порядковые номера с их соответствующими элементами. В случае, когда они не хотят сохранять порядок, я просто связываю инкрементный порядковый номер с каждым элементом в отсортированном списке. Затем я просто сортирую по порядковому номеру.

Взгляните на проект , и я думаю, что это будет иметь больше смысла.

0
0
Похожие сообщества 13
DotNetRuChat
DotNetRuChat
6 655 пользователей
Чат русскоязычного .NET сообщества http://dotnet.ru/ Правила: https://t.me/DotNetRuChat/704399 Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @AvaloniaRU, @xamarin_russia, @DotNetRuJobs, @uwp_ru Флуд в @dotnettalks
Открыть telegram
Вакансии .NET
Вакансии .NET
3 237 пользователей
Правила: https://t.me/DotNetRuJobs/123 Канал с вакансиями - https://t.me/DotNetRuJobsFeed Вам могут быть интересны: @dotnetruchat, @cilchat, @fsharp_chat, @pro_net, @AvaloniaRU, @xamarin_russia Флуд в @dotnettalks
Открыть telegram
pro.net - BFF: Best Friends Forever ❤️
pro.net - BFF: Best Friends Forever ❤️
1 769 пользователей
Обсуждение .NET и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). https://t.me/pro_net/34653 Флудилка: @dotnettalks
Открыть telegram
var chat = new Chat();
var chat = new Chat();
1 255 пользователей
Обсуждение вопросов по .NET Правила чата – https://blog.devdigest.today/chat-rules Чат для флуда – https://t.me/+MXQZTV9pdq5hM2Ri
Открыть telegram
.NET Talks - Tajvan je Kina
.NET Talks - Tajvan je Kina
1 228 пользователей
Свободный чат .NET разработчиков. Правила: https://t.me/dotnettalks/548269 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @DotNetRuJobs, @uwp_ru, @AvaloniaRu, @dotnettalksenglish
Открыть telegram
Чат конференции DotNext
Чат конференции DotNext
1 022 пользователей
Канал конференции: @dotnext_channel Ближайшая конференция — DotNext 2022 Spring, 16–17 июня, онлайн Билеты: https://tinyurl.com/DotNext2022Spring Больше конференций: https://tinyurl.com/FullPass2022Spring Саппорт: @JUGConfSupport_bot
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 5 дней назад
2
Hideo Nakagawa
Зарегистрирован 5 дней назад
3
Sergiy Tytarenko
Зарегистрирован 1 неделю назад
4
shoxrux azadov
Зарегистрирован 1 неделю назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией