ATLAS ReOrderList with ObjectDataSource and SqlDataSource Controls

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

Print | posted @ Friday, August 18, 2006 10:13 PM

Twitter