ATLAS ReOrder List allows the user to well reorder the
items in the list. Although it does provides the built in drag and drop
functionality but lacks the sorting functionality and hence the developer has to
implement it manually. I have demonstrated the examples of using the ATLAS
ReOrderList control with the SqlDataSource and ObjectDataSource control.
Database Table Schema:
CREATE TABLE [dbo].[Categories]
(
[CategoryID] [int] IDENTITY (1, 1) NOT NULL ,
[CategoryName]
[varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Order]
[int] NOT NULL
) ON [PRIMARY]
Using SQLDataSource Control (Complete Code):
// Connection String
<connectionStrings>
<add name="ConnectionString" connectionString
="Server=localhost;Database=School;Trusted_Connection=true"/>
</connectionStrings>
<cc1:ReorderList CssClass="ReOrderControlStyle"
OnItemReorder="ReOrderItemEvent" SortOrderField="Order" AllowReorder="true"
DataKeyField="CategoryID"
ItemInsertLocation="Beginning" DragHandleAlignment="left"
DataSourceID="SqlDataSource1" ID="ReorderList1" runat="server">
<ItemTemplate>
<asp:Label ID="lblCategoryName" runat="server"
Text='<%# Eval("CategoryName") %>' />
</ItemTemplate>
</cc1:ReorderList>
<asp:SqlDataSource ConnectionString
='<%$ ConnectionStrings:ConnectionString %>' ID="SqlDataSource1"
runat="server"
SelectCommand="SELECT * FROM Categories ORDER BY [Order] ASC"
UpdateCommand="UPDATE Categories SET [Order] =
@Order WHERE CategoryID = @original_CategoryID"
OldValuesParameterFormatString = "original_{0}">
<UpdateParameters>
<asp:Parameter Name="Order" Type="Int32" />
<asp:Parameter Name="original_CategoryID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
Using ObjectDataSource Control (Complete
Code):
<cc1:ReorderList CssClass="ReOrderControlStyle"
OnItemReorder="ReOrderItemEvent" SortOrderField="Order"
AllowReorder="true" DataKeyField="CategoryID"
ItemInsertLocation="Beginning" DragHandleAlignment
="left" DataSourceID="objCategories" ID="ReorderList1"
runat="server">
<ItemTemplate>
<asp:Label ID="lblCategoryName" runat="server"
Text='<%# Eval("CategoryName") %>' />
</ItemTemplate>
</cc1:ReorderList>
<asp:ObjectDataSource ID="objCategories" runat="server"
SelectMethod="GetAllCategories"
TypeName = "Category" UpdateMethod="UpdateCategories">
<UpdateParameters>
<asp:Parameter Name="Order" Type="Int32" />
<asp:Parameter Name="CategoryID" Type="Int32" />
<asp:Parameter Name="CategoryName" Type="String" />
</UpdateParameters>
</asp:ObjectDataSource>
Category Class:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public class Category
{
public Category()
{
}
/* For some reason I need to pass all the parameters even
though they were not included
in the parameter list*/
public void UpdateCategories(int Order, int CategoryID, string CategoryName)
{
string connectionString =
ConfigurationManager.ConnectionStrings["ConnectionString"]
.ConnectionString;
string query = "UPDATE Categories SET [Order] = @Order WHERE
CategoryID = @CategoryID";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlCommand myCommand = new SqlCommand(query,myConnection);
myCommand.Parameters.Add("@Order", Order);
myCommand.Parameters.Add("@CategoryID", CategoryID);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
public DataSet GetAllCategories()
{
SqlConnection myConnection = new SqlConnection
("Server=localhost;Database=School;Trusted_Connection=true");
SqlDataAdapter ad = new SqlDataAdapter
("SELECT * FROM Categories ORDER BY [Order]", myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);
return ds;
}
}
Hope it helps!
powered by IMHO 1.3