Перетаскивание с помощью элемента управления ReorderList (VB)
Кристиан Венц (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
в базе данных, и все это без кода, только с помощью разметки.
Данные в базе данных изменяются в соответствии с новым порядком элементов списка (щелкните для просмотра полноразмерного изображения)