ReorderList Aracılığıyla Sürükle ve Bırak (C#)
Christian Wenz tarafından
AJAX Denetim Araç Seti'ndeki ReorderList denetimi, sürükleyip bırakma yoluyla kullanıcı tarafından yeniden sıralanabilen bir liste sağlar. Listenin geçerli sırası sunucuda kalıcı olacaktır.
Genel Bakış
ReorderList
AJAX Denetim Araç Seti'ndeki denetim, sürükleyip bırakma yoluyla kullanıcı tarafından yeniden sıralanabilen bir liste sağlar. Listenin geçerli sırası sunucuda kalıcı olacaktır.
Adımlar
Denetim, ReorderList
veritabanından listeye veri bağlamayı destekler. Hepsinden iyisi, liste öğesinin sırasına değişiklikleri veri deposuna geri yazmayı da destekler.
Bu örnekte veri deposu olarak Microsoft SQL Server 2005 Express Sürüm kullanılmaktadır. Veritabanı, Express Edition dahil olmak üzere Visual Studio yüklemesinin isteğe bağlı (ve ücretsiz) bir parçasıdır. Ayrıca altında https://go.microsoft.com/fwlink/?LinkId=64064ayrı bir indirme olarak da kullanılabilir. Bu örnek için, SQL Server 2005 Express Sürüm örneğinin çağrıldığını SQLEXPRESS
ve web sunucusuyla aynı makinede bulunduğunu varsayarız; bu aynı zamanda varsayılan kurulumdur. Kurulumunuz farklıysa, veritabanı için bağlantı bilgilerini uyarlamanız gerekir.
Veritabanını ayarlamanın en kolay yolu Microsoft SQL Server Management Studio Express(https://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796& DisplayLang=en ). Sunucuya bağlanın, üzerine çift tıklayın Databases
ve adlı Tutorials
yeni bir veritabanı oluşturun (sağ tıklayın ve seçinNew Database
).
Bu veritabanında, aşağıdaki dört sütunla adlı AJAX
yeni bir tablo oluşturun:
id
(birincil anahtar, tamsayı, kimlik, NULL değil)char
(char(1), NULL)description
(varchar(50), NULL)position
(int, NULL)
AJAX tablosunun düzeni (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Ardından, tabloyu birkaç değerle doldurun. Sütunun position
öğelerin sıralama düzenini barındırdığını unutmayın.
AJAX tablosundaki ilk veriler (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Sonraki adım, yeni veritabanı ve tablosuyla iletişim kurmak için bir SqlDataSource
denetim oluşturulmasını gerektirir. Veri kaynağı ve UPDATE
SQL komutlarını desteklemelidirSELECT
. Liste öğelerinin sırası daha sonra değiştirildiğinde, ReorderList
denetim otomatik olarak veri kaynağının Update
komutuna iki değer gönderir: yeni konum ve öğenin kimliği. Bu nedenle, veri kaynağı şu iki değer için bir <UpdateParameters>
bölüme ihtiyaç duyar:
<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>
Denetimin ReorderList
aşağıdaki öznitelikleri ayarlaması gerekir:
AllowReorder
: Liste öğelerinin yeniden düzenlenip düzenlenemeyeceğiDataSourceID
: Veri kaynağının kimliğiDataKeyField
: Veri kaynağındaki birincil anahtar sütununun adıSortOrderField
: Liste öğeleri için sıralama düzenini sağlayan veri kaynağı sütunu
<DragHandleTemplate>
ve <ItemTemplate>
bölümlerinde, listenin düzeni ince ayarlanabilir. Ayrıca, burada görüldüğü gibi yöntemini kullanarak Eval()
veri bağlama mümkündür:
<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>
Aşağıdaki CSS stil bilgileri (denetimin <DragHandleTemplate>
ReorderList
bölümünde başvuruda bulunur) fare işaretçisinin sürükleme tutamacının üzerine geldiğinde uygun şekilde değişmesini sağlar:
<style type="text/css">
.DragHandleClass
{
width: 12px;
height: 12px;
background-color: red;
cursor:move;
}
</style>
Son olarak, bir ScriptManager
denetim sayfa için AJAX ASP.NET başlatır:
<asp:ScriptManager ID="asm" runat="server" />
Bu örneği tarayıcıda çalıştırın ve liste öğelerini biraz yeniden düzenleyin. Ardından sayfayı yeniden yükleyin ve/veya veritabanına göz atın. Değiştirilen konumlar korunur ve veritabanındaki sütundaki position
değerler tarafından da yansıtılır ve yalnızca işaretleme kullanılarak herhangi bir kod olmadan bu değerlere yansıtılır.
Veritabanındaki veriler yeni liste öğesi sırasına göre değişir (Tam boyutlu görüntüyü görüntülemek için tıklayın)