db saving of GridPanel records re-ordering

Page 1 of 3 123 LastLast
  1. #1

    db saving of GridPanel records re-ordering

    HI techies,

    I have a problem saving of gridpanel rows re-order in database.i using sqldatasource control to bind to store and for updating alos am using sqldatasource control.

    When I clk on Up/Down arrows then I am able to re-ordering the rows. after click on the save button these order not updating into the database

    Can anyone plzzz help. it is very very urgent to me.

    here is code

    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Ext.NET Example</title>
    
        <script type="text/javascript">      
        function konda()
        {
        alert(Ext.encode(GridPanel1.getRowsValues(false)));
        
        }
            function MoveUpOrDown(command, grid, rowIndex, colIndex, propertyToSwap)
            {           
                var newIndex = -1, store = grid.getStore();     
                if (command == 'MoveUp' && rowIndex > 0)
                {               
                newIndex = rowIndex - 1;   
                }     
                else if (command == 'MoveDown' && rowIndex < store.data.items.length - 1) 
                {
                newIndex = rowIndex + 1;    
                }     
                if (newIndex !== -1) 
                {           
                swap(store.data.items, rowIndex, newIndex, "Sort"); 
    
                //We have to do the same if there is a snapshot in the store       
                if (store.snapshot && store.snapshot != store.data)
                {             
                swap(store.snapshop.items, rowIndex, newIndex, "Sort"); 
                } 
                
                grid.store.data.items[rowIndex].commit();
                grid.store.data.items[newIndex].commit();
    //            var newRecord = store.getAt(newIndex); 
    //            curRecord.commit();                 
    //            newRecord.commit();
                
             
                return false;   
                }    
                return true;    
            }  
    
            function swap(array, oldIndex, newIndex, propertyToSwap) 
            {        
                var temp = array[oldIndex];       
                array[oldIndex] = array[newIndex];    
                array[newIndex] = temp;            
                temp = array[oldIndex].data[propertyToSwap];    
                array[oldIndex].data[propertyToSwap] = array[newIndex].data[propertyToSwap];     
                array[newIndex].data[propertyToSwap] = temp;   
            }   
        </script>
    
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug" />
    
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=wizard;Data Source=DRAGRAN"
            SelectCommand="select ID,Name, Description, Width,Height,Sort  from tblWebAdPosition  order by Sort asc "
            UpdateCommand="update tblWebAdPosition set Name =@Name, Description=@Description, Width=@Width, Height=@Height,Sort=@Sort where ID=@ID">
            <UpdateParameters>
                <asp:Parameter Name="Name" DbType="String" />
                <asp:Parameter Name="Description" DbType="String" />
                <asp:Parameter Name="Width" DbType="Int32" />
                <asp:Parameter Name="Height" DbType="Int32" />
                <asp:Parameter Name="Sort" DbType="Int32" />
                <asp:Parameter Name="ID" DbType="Int32" />
            </UpdateParameters>
        </asp:SqlDataSource>
        <ext:Store ID="Store1" runat="server" DataSourceID="SqlDataSource1">
            <Reader>
                <%--<ext:ArrayReader>
                    <Fields>
                        <ext:RecordField Name="company" />
                        <ext:RecordField Name="price" Type="Float" />
                        <ext:RecordField Name="change" Type="Float" />
                        <ext:RecordField Name="pctChange" Type="Float" />
                        <ext:RecordField Name="lastChange" Type="Date" DateFormat="n/j h:ia" />
                    </Fields>
                </ext:ArrayReader>--%>
                <ext:JsonReader ReaderID="ID">
                    <Fields>
                        <ext:RecordField Name="ID">
                        </ext:RecordField>
                        <ext:RecordField Name="Name">
                        </ext:RecordField>
                        <ext:RecordField Name="Description">
                        </ext:RecordField>
                        <ext:RecordField Name="Width">
                        </ext:RecordField>
                        <ext:RecordField Name="Height">
                        </ext:RecordField>
                        <ext:RecordField Name="Sort">
                        </ext:RecordField>
                    </Fields>
                </ext:JsonReader>
            </Reader>
        </ext:Store>
        <ext:GridPanel ID="GridPanel1" runat="server" StoreID="Store1" AutoHeight="true">
            <ColumnModel ID="ColumnModel1" runat="server">
                <Columns>
                    <ext:ImageCommandColumn>
                        <Commands>
                            <ext:ImageCommand Icon="ArrowUp" CommandName="MoveUp" />
                            <ext:ImageCommand Icon="ArrowDown" CommandName="MoveDown" />
                        </Commands>
                    </ext:ImageCommandColumn>
                    <ext:Column Header="Name" Width="160" Sortable="true" DataIndex="Name" />
                    <ext:Column Header="Description" Width="75" Sortable="true" DataIndex="Description">
                    </ext:Column>
                    <ext:Column Header="Width" Width="75" Sortable="true" DataIndex="Width" />
                    <ext:Column Header="Height" Width="75" Sortable="true" DataIndex="Height" />
                    <ext:Column Header="Sort" Width="75" Sortable="true" DataIndex="Sort" />
                </Columns>
            </ColumnModel>
            <Listeners>
                <Command Handler="if (command === 'MoveUp' || command === 'MoveDown') {              
                                           MoveUpOrDown(command, #{GridPanel1}, rowIndex, colIndex, 'Sort');     
                                                                               return false;                 
                                                                                                 }        
                                                                                                                      " />
            </Listeners>
            <BottomBar>
                <ext:PagingToolbar ID="PagingToolbar1" runat="server" PageSize="5" />
            </BottomBar>
            <%--  <Plugins>
                <ext:GridFilters ID="GridFilters1" runat="server">
                    <Filters>
                        <ext:StringFilter DataIndex="SectionName" />
                    </Filters>
                </ext:GridFilters>
            </Plugins>--%>
        </ext:GridPanel>
        <ext:Button ID="Button1" runat="server" Text="Save">
            <Listeners>
                <Click Handler="#{GridPanel1}.save();" />
            </Listeners>
        </ext:Button>
        </form>
    </body>
    </html>
  2. #2
    Hi,

    Please see the example.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] 
                { 
                    new object[] { 1 },
                    new object[] { 2 },
                    new object[] { 3 }
                };
                store.DataBind();
            }
        }
    
        protected void Save(object sender, DirectEventArgs e)
        {
            X.Msg.Alert("Saved", e.ExtraParams["data"]).Show();
        }
    </script>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var onCommand = function(command, record, rowIndex, colIndex) {
                var store = this.getStore(),
                    newIndex;
                if (command === "down") {
                    newIndex = rowIndex + 1;
                    if (newIndex >= store.getCount()) {
                        newIndex = 0;
                    }
                } else if (command === "up") {
                    newIndex = rowIndex - 1;
                    if (newIndex < 0) {
                        newIndex = store.getCount() - 1;
                    }
                }
                
                store.suspendEvents();
                store.removeAt(rowIndex);
                store.insert(newIndex, record);
                store.resumeEvents();
                this.getView().refresh(false);
            }
        </script>
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:ImageCommandColumn Width="50">
                        <Commands>
                            <ext:ImageCommand Icon="ArrowUp" CommandName="up" />
                            <ext:ImageCommand Icon="ArrowDown" CommandName="down" />
                        </Commands>
                    </ext:ImageCommandColumn>
                    <ext:Column Header="Test" DataIndex="test" />
                </Columns>
            </ColumnModel>
            <Listeners>
                <Command Fn="onCommand" />
            </Listeners>
        </ext:GridPanel>
        <ext:Button runat="server" Text="Save">
            <DirectEvents>
                <Click OnEvent="Save">
                    <ExtraParams>
                        <ext:Parameter 
                            Name="data" 
                            Value="GridPanel1.getRowsValues({ excludeId : true })" 
                            Mode="Raw" 
                            Encode="true" />
                    </ExtraParams>
                </Click>
            </DirectEvents>
        </ext:Button>
        </form>
    </body>
    </html>
  3. #3

    db saving of GridPanel records re-ordering

    HI Daniil,
    Thanks for your reply.
    In my code I am using sqldatasource control for binding and updating the data into database. is it possible to save the data (reordering of rows) into the database by using sqldatasource control without code behind (DirectEvent) event. bcoz my table columns are dynamic so Ii can't hardcode the sql update query.

    I implemented your code with sqldatasource control, but it is not working.

    Can you plz help me . it is very urgent to me.





    Quote Originally Posted by Daniil View Post
    Hi,

    Please see the example.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] 
                { 
                    new object[] { 1 },
                    new object[] { 2 },
                    new object[] { 3 }
                };
                store.DataBind();
            }
        }
    
        protected void Save(object sender, DirectEventArgs e)
        {
            X.Msg.Alert("Saved", e.ExtraParams["data"]).Show();
        }
    </script>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var onCommand = function(command, record, rowIndex, colIndex) {
                var store = this.getStore(),
                    newIndex;
                if (command === "down") {
                    newIndex = rowIndex + 1;
                    if (newIndex >= store.getCount()) {
                        newIndex = 0;
                    }
                } else if (command === "up") {
                    newIndex = rowIndex - 1;
                    if (newIndex < 0) {
                        newIndex = store.getCount() - 1;
                    }
                }
                
                store.suspendEvents();
                store.removeAt(rowIndex);
                store.insert(newIndex, record);
                store.resumeEvents();
                this.getView().refresh(false);
            }
        </script>
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:ImageCommandColumn Width="50">
                        <Commands>
                            <ext:ImageCommand Icon="ArrowUp" CommandName="up" />
                            <ext:ImageCommand Icon="ArrowDown" CommandName="down" />
                        </Commands>
                    </ext:ImageCommandColumn>
                    <ext:Column Header="Test" DataIndex="test" />
                </Columns>
            </ColumnModel>
            <Listeners>
                <Command Fn="onCommand" />
            </Listeners>
        </ext:GridPanel>
        <ext:Button runat="server" Text="Save">
            <DirectEvents>
                <Click OnEvent="Save">
                    <ExtraParams>
                        <ext:Parameter 
                            Name="data" 
                            Value="GridPanel1.getRowsValues({ excludeId : true })" 
                            Mode="Raw" 
                            Encode="true" />
                    </ExtraParams>
                </Click>
            </DirectEvents>
        </ext:Button>
        </form>
    </body>
    </html>
  4. #4
    How does your code look now?
  5. #5

    db saving of GridPanel records re-ordering

    Quote Originally Posted by Daniil View Post
    How does your code look now?
    Hi Daniil,

    here is the my code after inserting your code.

    I have update command in "SqlDataSource1" control. When clk on save button i am trying to save data into database by using sqldatasource update command. here am not using DirectEvents.

    Is it possible to saving of gridpanel rows re-order data into databse by using sqldatasource update command?

    In tblWebAdPosition sql table, in Sort column am storing the order of the data.

    If any information required kindly let me know please..... :)


    <%@ Page Language="VB" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
    
        <title>Ext.NET Example</title>
    
    <script runat="server">
    
        Protected Sub Save(ByVal sender As Object, ByVal e As DirectEventArgs)
           
            Ext.Net.X.Msg.Alert("Saved", e.ExtraParams("data")).Show()
        End Sub
    </script>
    
        <script type="text/javascript">      
        
            var onCommand = function(command, record, rowIndex, colIndex) { 
            var store = this.getStore(),newIndex;             
            if (command === "down")
            {
            newIndex = rowIndex + 1;
            if (newIndex >= store.getCount()) {
            newIndex = 0;
            }
            } 
            else if (command === "up")
            {
            newIndex = rowIndex - 1;
            if (newIndex < 0) 
            {
            newIndex = store.getCount() - 1;                       
            } 
    
            }     
            store.suspendEvents(); 
            store.removeAt(rowIndex);  
            store.insert(newIndex, record);   
            store.resumeEvents();         
            this.getView().refresh(false); 
            } 
            
            
             
        </script>
    
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server">
        </ext:ResourceManager>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=wizard;Data Source=DRAGRAN"
            SelectCommand="select ID,Name, Description, Width,Height,Sort  from tblWebAdPosition  order by Sort asc "
            UpdateCommand="update tblWebAdPosition set Name =@Name, Description=@Description, Width=@Width, Height=@Height,Sort=@Sort where ID=@ID">
            <UpdateParameters>
                <asp:Parameter Name="Name" DbType="String" />
                <asp:Parameter Name="Description" DbType="String" />
                <asp:Parameter Name="Width" DbType="Int32" />
                <asp:Parameter Name="Height" DbType="Int32" />
                <asp:Parameter Name="Sort" DbType="Int32" />
                <asp:Parameter Name="ID" DbType="Int32" />
            </UpdateParameters>
        </asp:SqlDataSource>
        <ext:Store ID="Store1" runat="server" DataSourceID="SqlDataSource1">
            <Reader>
                <ext:JsonReader IDProperty="ID">
                    <Fields>
                        <ext:RecordField Name="ID">
                        </ext:RecordField>
                        <ext:RecordField Name="Name">
                        </ext:RecordField>
                        <ext:RecordField Name="Description">
                        </ext:RecordField>
                        <ext:RecordField Name="Width">
                        </ext:RecordField>
                        <ext:RecordField Name="Height">
                        </ext:RecordField>
                        <ext:RecordField Name="Sort">
                        </ext:RecordField>
                    </Fields>
                </ext:JsonReader>
            </Reader>
            <Listeners>
                <LoadException Handler="Ext.Msg.alert(' Load failed', e.message || e);" />
                <CommitFailed Handler="Ext.Msg.alert('Commit failed', 'Reason: ' + msg);" />
                <SaveException Handler="Ext.Msg.alert('Save failed', e.message || e);" />
                <CommitDone Handler="Ext.Msg.alert('Commit', 'The data successfully saved');" />
            </Listeners>
        </ext:Store>
        <ext:GridPanel ID="GridPanel1" runat="server" StoreID="Store1" AutoHeight="true">
            <ColumnModel ID="ColumnModel1" runat="server">
                <Columns>
                    <ext:ImageCommandColumn>
                        <Commands>
                            <ext:ImageCommand Icon="ArrowUp" CommandName="up" />
                            <ext:ImageCommand Icon="ArrowDown" CommandName="down" />
                        </Commands>
                    </ext:ImageCommandColumn>
                    <ext:Column Header="Name" Width="160" Sortable="true" DataIndex="Name" />
                    <ext:Column Header="Description" Width="75" Sortable="true" DataIndex="Description">
                    </ext:Column>
                    <ext:Column Header="Width" Width="75" Sortable="true" DataIndex="Width" />
                    <ext:Column Header="Height" Width="75" Sortable="true" DataIndex="Height" />
                    <%-- <ext:Column Header="Sort" Width="75" Sortable="true" DataIndex="Sort" />--%>
                </Columns>
            </ColumnModel>
            <Listeners>
     <%--           <Command Handler="if (command === 'MoveUp' || command === 'MoveDown') {              
                                           MoveUpOrDown(command, #{Store1}, rowIndex, colIndex, 'Sort');return false;} " />--%>
                <Command Fn="onCommand" />
            </Listeners>
            <Buttons>
                <ext:Button runat="server" ID="btnAdd" Text="Add" Icon="Add">
                    <Listeners>
                        <Click Handler="#{GridPanel1}.insertRecord(0, {});#{GridPanel1}.getView().focusRow(0);#{GridPanel1}.startEditing(0, 0);" />
                    </Listeners>
                </ext:Button>
                <ext:Button runat="server" ID="btnSave" Text="Save" Icon="Disk">
                    <Listeners>
                        <Click Handler="#{GridPanel1}.save();" />
                    </Listeners>
                </ext:Button>
                <ext:Button runat="server" ID="btnDelete" Text="Delete Selected Records" Icon="Delete">
                    <Listeners>
                        <Click Handler="#{GridPanel1}.deleteSelected();" />
                    </Listeners>
                </ext:Button>
                <ext:LinkButton Html="Please click on the Save button After add/editing the details"
                    runat="server">
                </ext:LinkButton>
            </Buttons>
        </ext:GridPanel>
        <ext:Button ID="Button1" runat="server" Text="Save">
            <DirectEvents>
                <Click OnEvent="Save">
                    <ExtraParams>
                        <ext:Parameter Name="data" Value="GridPanel1.getRowsValues({ excludeId : true })"
                            Mode="Raw" Encode="true" />
                    </ExtraParams>
                </Click>
            </DirectEvents>
        </ext:Button>
        </form>
    </body>
    </html>
  6. #6
    Well, I can see where you save data without DirectEvent.

    To save it using UpdateCommand of SqlDataSource, just use this client side code:
    GridPanel1.save();
  7. #7

    db saving of GridPanel records re-ordering

    Quote Originally Posted by Daniil View Post
    Well, I can see where you save data without DirectEvent.

    To save it using UpdateCommand of SqlDataSource, just use this client side code:
    GridPanel1.save();
    HI Daniil,
    Thanks for your reply.

    I am already calling <b>
    GridPanel1.save();
    </b> in my code. but it is not saving into the database.

    <Buttons>             <ext:Button runat="server" ID="btnAdd" Text="Add" Icon="Add">                 <Listeners>                     <Click Handler="#{GridPanel1}.insertRecord(0, {});#{GridPanel1}.getView().focusRow(0);#{GridPanel1}.startEditing(0, 0);" />                 </Listeners>             </ext:Button>             <ext:Button runat="server" ID="btnSave" Text="Save" Icon="Disk">                 <Listeners>                     <Click Handler="#{GridPanel1}.save();" />                 </Listeners>             </ext:Button>             <ext:Button runat="server" ID="btnDelete" Text="Delete Selected Records" Icon="Delete">                 <Listeners>                     <Click Handler="#{GridPanel1}.deleteSelected();" />                 </Listeners>             </ext:Button>             <ext:LinkButton Html="Please click on the Save button After add/editing the details"                runat="server">             </ext:LinkButton>         </Buttons>
  8. #8
    I'm afraid it won't work, in other words UpdateCommand won't save order of rows.

    I think there is no automatic way to save order.

    I can suggest the following two options.

    1. Bulk saving: use DirectEvent/DirectMethod, extra parameter - all records ids; save it to database manually on server side by respective way.
    2. You can call DirectMethod in the Command listener passing two records ids and new positions, to save new position for each row moving.
  9. #9
    Quote Originally Posted by Daniil View Post
    I'm afraid it won't work, in other words UpdateCommand won't save order of rows.

    I think there is no automatic way to save order.

    I can suggest the following two options.

    1. Bulk saving: use DirectEvent/DirectMethod, extra parameter - all records ids; save it to database manually on server side by respective way.
    2. You can call DirectMethod in the Command listener passing two records ids and new positions, to save new position for each row moving.
    HI Daniil,

    in my code also I am doing updating the values right? in sort column am changing the values. so , the update need be work right?

    Instead of your java script if use below java script is it work? here am changing the values of sort column. can you plz suggest me.

    {                        var newIndex = -1, store = grid.getStore();                  if (command == 'MoveUp' && rowIndex > 0)             {                            newIndex = rowIndex - 1;                }                  else if (command == 'MoveDown' && rowIndex < store.data.items.length - 1)              {             newIndex = rowIndex + 1;                 }                  if (newIndex !== -1)              {                        swap(store.data.items, rowIndex, newIndex, "Sort");                //We have to do the same if there is a snapshot in the store                    if (store.snapshot && store.snapshot != store.data)             {                          swap(store.snapshop.items, rowIndex, newIndex, "Sort");              }                            grid.store.data.items[rowIndex].commit();             grid.store.data.items[newIndex].commit();                                    return false;                }                 return true;             }             function swap(array, oldIndex, newIndex, propertyToSwap)          {                     var temp = array[oldIndex];                    array[oldIndex] = array[newIndex];                 array[newIndex] = temp;                         temp = array[oldIndex].data[propertyToSwap];                 array[oldIndex].data[propertyToSwap] = array[newIndex].data[propertyToSwap];                  array[newIndex].data[propertyToSwap] = temp;            }
  10. #10
    Quote Originally Posted by kondareddy1984 View Post
    in my code also I am doing updating the values right? in sort column am changing the values. so , the update need be work right?
    Well, UpdateCommand works fine for the changed records, but it doesn't save the order.

    I'd suggest you to implement your custom logic to save changed records and its orders.

    Quote Originally Posted by kondareddy1984 View Post
    Instead of your java script if use below java script is it work? here am changing the values of sort column. can you plz suggest me.
    It's hard to review the code you posted, it's not formatted.
Page 1 of 3 123 LastLast

Similar Threads

  1. MVC Gridpanel Saving Help
    By ChrisB in forum 2.x Help
    Replies: 0
    Last Post: Aug 14, 2012, 4:18 PM
  2. Replies: 2
    Last Post: Apr 14, 2011, 9:03 AM
  3. Replies: 3
    Last Post: Jun 29, 2010, 2:54 PM
  4. Replies: 2
    Last Post: Dec 02, 2009, 12:08 PM
  5. [CLOSED] Getting row changes from GridPanel when saving
    By egodoy in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Jul 29, 2009, 2:34 PM

Tags for this Thread

Posting Permissions