сохранить изменения HTML клиента - PullRequest
6 голосов
/ 20 декабря 2010

У меня есть элемент div, который содержит элемент ul, который начинается пустым при первой загрузке страницы.Затем пользователь может перетащить элементы li в это поле div, которое заполнит элемент ul.Мне нужно иметь возможность сохранять элементы li, которые были добавлены в контейнер ul, чтобы я мог показывать элементы li после публикации назад.Как я могу добиться этого?

<div class="sidebar-drop-box">              
                 <p class="dropTitle"><strong>Drop Box</strong><br />  
                     Drag and drop tracks here temporarily if you’re working with a long playlist.</p>  
                 <ul class="admin-song-list"></ul>  
         </div>

перетаскивание осуществляется с помощью javascript и jquery.Все это находится на странице asp.net.когда перетаскивание завершено, это код, который выполняется

function AddToDropBox(obj) {
    $(obj).children(".handle").animate({ width: "20px" }).children("strong").fadeOut();
    $(obj).children("span:not(.track,.play,.handle,:has(.btn-edit))").fadeOut('fast');
    $(obj).children(".play").css("margin-right", "8px");
    $(obj).css({ "opacity": "0.0", "width": "284px" }).animate({ opacity: "1.0" });
    if ($(".sidebar-drop-box ul").children(".admin-song").length > 0) {
        $(".dropTitle").fadeOut("fast");
        $(".sidebar-drop-box ul.admin-song-list").css("min-height", "0");
    }
    if (typeof SetLinks == 'function') {
        SetLinks();
    }

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

//repopulate drop box
    if(document.getElementById("ctl00_cphBody_hfRemoveMedia").value!="")
        {
            var localRemoveMedias=document.getElementById("ctl00_cphBody_hfRemoveMedia").value.split(",");
            $(".admin-left li.admin-song").each(function(){
//                alert("inEach");//WORKS
                for(x in localRemoveMedias)
                {
                    if($(this).attr("mediaid")==localRemoveMedias[x])
                    {
                        AddToDropBox($(this));
                    }
                }//end for
            });//function(){
        }

Ответы [ 3 ]

1 голос
/ 13 февраля 2011

Чтобы сохранить перетаскиваемые элементы в обратной передаче, я предлагаю вам сохранять идентификаторы элементов в поле asp: hidden, когда ваш пользователь выполняет свои операции перетаскивания.

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

0 голосов
/ 05 марта 2011

яблоки и апельсины.Почему вы отправляете обратно?Я делал то же самое, когда начал использовать Ajax.У меня было немного приятной функциональности Ajax и множество старых старых управляемых состояний viewstateenabled = "true" старых добрых .Net на одной странице.Это то, что нас кормят последние 10 лет.Я сохранял состояние изменений, когда вносил их на клиенте, а затем выполнял маневрирование на сервере, чтобы сохранить изменения между обратными передачами.Я обнаружил, что чем меньше я использую постбэков и тем больше развиваюсь в состоянии без сознания.Если вы можете избежать обратной отправки, сделайте Ajax-вызов на сервер и сделайте то, что вам нужно сделать, верните результаты и перерисовайте соответственно.

0 голосов
/ 15 февраля 2011

Для операций перетаскивания, как правило, обратная запись не требуется.Вы можете выполнять обновления на стороне сервера, используя Ajax, что полностью исключит создание состояния страницы.

...