Использование jQuery для перемещения элементов между списками .NET - PullRequest
1 голос
/ 24 июня 2011

У меня есть два списка, два тега ввода html и одна кнопка отправки .NET на веб-странице.

// The two listboxes
<asp:ListBox ID="lbViewOptions_Hidden" runat="server" Rows="7" Width="110px"></asp:ListBox>
<asp:ListBox ID="lbViewOptions_Show" runat="server" Rows="7" Width="110px"></asp:ListBox>

// The two html input tag
<input id="ibtnRight" type="image" src="images/move_right.png" style="height:16px;width:16px;border-width:0px;" />
<input id="ibtnLeft" type="image" src="images/move_left.png" style="height:16px;width:16px;border-width:0px;" />

// The .NET submit button
<asp:Button ID="btnApplyViewOptions" runat="server" Text="Apply" CssClass="submit" onclick="btnApplyViewOptions_Click" />

У меня есть следующие функции jQuery для событий нажатия тегов ввода, которые просто перемещают элементывперед и назад между двумя списками.Эти функции прекрасно работают и перемещают элементы назад и вперед между списками.

$('#ibtnRight').click(function ($e) {
    $("select[id$='lbViewOptions_Hidden'] option:selected").appendTo(
        $("select[id$='lbViewOptions_Show']"));
    $("select[id$='lbViewOptions_Hidden'] option:selected").remove();

    $e.preventDefault();
});

$('#ibtnLeft').click(function ($e) {
    $("select[id$='lbViewOptions_Show'] option:selected").appendTo(
        $("select[id$='lbViewOptions_Hidden']"));
    $("select[id$='lbViewOptions_Show'] option:selected").remove();

    $e.preventDefault();
});

Списки загружаются во время события page_load с различными динамическими элементами, поэтому я вместо этого использую элементы управления списками ASP.NET вместопросто жестко закодировать HTML-тег выбора с различными элементами. Моя проблема заключается в следующем: из-за того, что списки являются элементами управления .NET, и я использую jQuery для перемещения элементов между ними, любые сделанные в них изменения не сохраняются в течениепостбэк .

Например, предположим, что в списке lbViewOptions_Hidden есть два элемента: «Foo # 1» и «Foo # 2».Если я выберу элемент «Foo # 2» и нажму кнопку ввода, чтобы переместить его в список lbViewOptions_Show, то он переместится как следует, и теперь у меня есть элемент «Foo # 1» в первом списке и элемент «Foo # 2»во втором списке. Однако , если я нажимаю кнопку .NET btnApplyViewOptions, чтобы отправить обратно на сервер, во втором списке нет элементов, и все элементы все еще находятся в первом списке .

Как мне решить эту проблему?Я предполагаю, что это как-то связано с ViewState, но я не уверен в этом.Заранее спасибо за любую помощь, которую я получаю в этом!

1 Ответ

1 голос
/ 24 июня 2011

Вам придется либо использовать Ajax для вызова серверной стороны WebMethod, чтобы обновить элементы управления, сохранив изменения в сеансе ... затем при обратной передаче обновите элементы управления со значениями сеанса.

Или вы можете использовать скрытое поле, к которому добавлен атрибут runat="server", чтобы сохранить изменения между списками, а затем перехватить изменения в обратной публикации и таким образом обновить элементы управления.

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