Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Кристиан Венц (Christian Wenz)
Элемент управления ReorderList в наборе элементов управления AJAX предоставляет список, который может быть переупорядочен пользователем с помощью перетаскивания. Текущий порядок списка должен сохраняться на сервере.
Общие сведения
Элемент ReorderList
управления в наборе элементов управления AJAX предоставляет список, который пользователь может изменить с помощью перетаскивания. Текущий порядок списка должен сохраняться на сервере.
Этапы
Элемент ReorderList
управления поддерживает привязку данных из базы данных к списку. Кроме того, он также поддерживает запись изменений в порядок элемента списка обратно в хранилище данных.
В этом примере в качестве хранилища данных используется SQL Server 2005, экспресс-выпуск Майкрософт. База данных является необязательной (и бесплатной) частью установки Visual Studio, включая экспресс-выпуск. Он также доступен для отдельного скачивания в разделе https://go.microsoft.com/fwlink/?LinkId=64064. В этом примере предполагается, что экземпляр SQL Server 2005, экспресс-выпуск вызывается SQLEXPRESS
и находится на том же компьютере, что и веб-сервер. Это также настройка по умолчанию. Если конфигурация отличается, необходимо адаптировать сведения о подключении к базе данных.
Самый простой способ настройки базы данных — использовать Microsoft SQL Server Management Studio Express (https://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796& DisplayLang=en ). Подключитесь к серверу, дважды щелкните Databases
и создайте базу данных (щелкните правой кнопкой мыши и выберите New Database
) с именем Tutorials
.
В этой базе данных создайте таблицу AJAX
со следующими четырьмя столбцами:
-
id
(первичный ключ, целое число, удостоверение, а не NULL) -
char
(char(1), NULL) -
description
(varchar(50), NULL) -
position
(int, NULL)
Макет таблицы AJAX (щелкните для просмотра полноразмерного изображения)
Затем заполните таблицу парой значений. Обратите внимание, что столбец position
содержит порядок сортировки элементов.
Начальные данные в таблице AJAX (щелкните для просмотра полноразмерного изображения)
На следующем шаге необходимо создать SqlDataSource
элемент управления для взаимодействия с новой базой данных и ее таблицей. Источник данных должен поддерживать SELECT
команды SQL и UPDATE
. При последующем изменении ReorderList
порядка элементов списка элемент управления автоматически отправляет в команду источника Update
данных два значения: новое положение и идентификатор элемента. Таким образом, источнику данных требуется <UpdateParameters>
раздел для следующих двух значений:
<asp:SqlDataSource ID="sds" runat="server" ConnectionString="Data
Source=(local)\SQLEXPRESS;Initial Catalog=Tutorials;Integrated Security=True"
ProviderName="System.Data.SqlClient" OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT [id], [char], [description], [position] FROM [AJAX] ORDER BY [position]"
UpdateCommand="UPDATE [AJAX] SET position=@position WHERE [id]=@original_id">
<UpdateParameters>
<asp:Parameter Name="position" Type="Int32" />
<asp:Parameter Name="original_id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
Элемент ReorderList
управления должен задать следующие атрибуты:
-
AllowReorder
: можно ли переупорядочить элементы списка. -
DataSourceID
: идентификатор источника данных. -
DataKeyField
: имя столбца первичного ключа в источнике данных. -
SortOrderField
: столбец источника данных, предоставляющий порядок сортировки для элементов списка.
<DragHandleTemplate>
В разделах и <ItemTemplate>
можно точно настроить макет списка. Кроме того, привязка данных возможна с помощью Eval()
метода , как показано ниже:
<ajaxToolkit:ReorderList ID="rl1" runat="server" SortOrderField="position"
AllowReorder="true" DataSourceID="sds" DataKeyField="id">
<DragHandleTemplate>
<div class="DragHandleClass">
</div>
</DragHandleTemplate>
<ItemTemplate>
<asp:Label ID="ItemLabel" runat="server" Text='<%#Eval("description") %>' />
</ItemTemplate>
</ajaxToolkit:ReorderList>
Следующие сведения о стиле CSS (ссылки на которые приведены в <DragHandleTemplate>
разделе ReorderList
элемента управления) гарантирует, что указатель мыши изменяется соответствующим образом при наведении указателя мыши на маркер перетаскивания:
<style type="text/css">
.DragHandleClass
{
width: 12px;
height: 12px;
background-color: red;
cursor:move;
}
</style>
Наконец, ScriptManager
элемент управления инициализирует ASP.NET AJAX для страницы:
<asp:ScriptManager ID="asm" runat="server" />
Запустите этот пример в браузере и немного переупорядочите элементы списка. Затем перезагрузите страницу и (или) просмотрите базу данных. Измененные позиции были сохранены и также отражены значениями в столбце position
в базе данных, и все это без кода, только с помощью разметки.
Данные в базе данных изменяются в соответствии с новым порядком элементов списка (щелкните для просмотра полноразмерного изображения)