Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Datagrid reorder

Status
Not open for further replies.

cornboy88

Programmer
Jan 16, 2002
59
0
0
US
I have some javascript that will work with 2 buttons on the side of the datagrid. then when the user selects the row they can move the row up or down. I need some help changing the script. I need 2 buttons at the end of each row. When a button is pressed it moves the record either up or down in the datagrid. The buttons at row end can only move that record row.

Thanks

Code:
<asp:DataGrid ID="dgSalesGroupItems" runat="server" AutoGenerateColumns="False" BorderColor="Black">
                        <AlternatingItemStyle CssClass="alternatingItemStyle"></AlternatingItemStyle>
                        <ItemStyle CssClass="ItemStyle"></ItemStyle>
                        <Columns>
                            <asp:BoundColumn DataField="LongDescr" HeaderText="Course Name" ReadOnly="True">
                                <HeaderStyle HorizontalAlign="Center" VerticalAlign="Bottom" Width="170px"></HeaderStyle>
                                <ItemStyle HorizontalAlign="Left" Width="170px" VerticalAlign="Middle"></ItemStyle>
                            </asp:BoundColumn>
                            <asp:BoundColumn HeaderText="Crs. #" DataField="CourseType" ReadOnly="True">
                                <HeaderStyle HorizontalAlign="Center" VerticalAlign="Bottom" Width="75px"></HeaderStyle>
                                <ItemStyle HorizontalAlign="Left" Width="75px" VerticalAlign="Middle"></ItemStyle>
                            </asp:BoundColumn>
                            <asp:TemplateColumn HeaderText="Sales Group Name">
                                <HeaderStyle HorizontalAlign="Center" Width="170px" VerticalAlign="Bottom" />
                                <ItemStyle HorizontalAlign="Left" Width="170px" VerticalAlign="Middle" />
                                <ItemTemplate>
                                    <afwui:afwTextBox ID="txtSalesGroupName" runat="server" MaxLength="20" Width="135px"
                                        CssClass="regularTextBox" Text='<%#DataBinder.Eval(Container, &amp;quot;DataItem.SalesGroupName&amp;quot;)%>'
                                        ToolTip='<%#DataBinder.Eval(Container, &amp;quot;DataItem.SeqNo&amp;quot;)%>'> </afwui:afwTextBox><asp:RequiredFieldValidator
                                            ID="rfvTxtSalesGroup" runat="server" Display="Dynamic" ErrorMessage="<img src='../Images/Icons/error.gif' title='Sales Group Name is required.'>"
                                            ControlToValidate="txtSalesGroupName"></asp:RequiredFieldValidator>
                                </ItemTemplate>
                            </asp:TemplateColumn>
                            <asp:TemplateColumn HeaderStyle-Width="0px">
                                <ItemTemplate>
                                    <input id="btnUp" onclick="MoveUp()" type="button" value="    Up    " />
                                    <input id="btnDown" onclick="MoveDown()" type="button" value="  Down  " />
                                </ItemTemplate>
                            </asp:TemplateColumn>
                            <asp:TemplateColumn HeaderStyle-Width="0px">
                                <HeaderStyle HorizontalAlign="Center" Width="0px" VerticalAlign="Bottom" />
                                <ItemStyle HorizontalAlign="Left" Width="170px" VerticalAlign="Middle" CssClass="myColumn" />
                                <ItemTemplate>
                                    <afwui:afwTextBox ID="txtSeqNum" runat="server" MaxLength="20" Width="135px" CssClass="regularTextBox"
                                        ToolTip='<%#DataBinder.Eval(Container, &amp;quot;DataItem.SalesGroupName&amp;quot;)%>' Text='<%#DataBinder.Eval(Container, &amp;quot;DataItem.SeqNo&amp;quot;)%>'> </afwui:afwTextBox>
                                </ItemTemplate>
                            </asp:TemplateColumn>
                            <asp:BoundColumn DataField="SeqNo" Visible="False"></asp:BoundColumn>
                            <asp:BoundColumn DataField="SalesGroupName" Visible="False"></asp:BoundColumn>
                        </Columns>
                    </asp:DataGrid>



<script language="javascript" type="text/javascript">
        
        var selectColor = "#ffffa6";  

        function ChangeRowNum() {
            var tblName = document.getElementById("dgSalesGroupItems");
            var rows = tblName.getElementsByTagName("tr");
           for (i = 1; i < rows.length; i++) {
                rows[i - 1].cells[3].children[0].children[0].value = i;
                                rows[i].id = i

            }
        }

        
        function SelectRow(tblTable) {
            var SelectedRow = tblTable.srcElement.parentNode;

            if (SelectedRow.style.backgroundColor == selectColor)  //is selected ?
            {
                SelectedRow.style.backgroundColor = "white";    //deselect
            }
            else {
                SelectedRow.style.backgroundColor = selectColor;  //select
            }
            var i = 0;
            var RightTable = document.getElementById("dgSalesGroupItems");

            //this loop prevents from selecting multiple rows
            for (i = 1; i < RightTable.rows.length; i++) {
                if (RightTable.rows[i - 1].id == SelectedRow.id) {
                }
                else {
                    if (i % 2 == 0) {
                        RightTable.rows[i - 1].style.backgroundColor = "#ccffcc";
                    } else { RightTable.rows[i - 1].style.backgroundColor = "white"; }

                }
            }

        }

   
        function MoveUp() {
            var RightTable = document.getElementById("dgSalesGroupItems");
            var i = 0;

            for (i = 0; i < RightTable.rows.length; i++) {
                if (RightTable.rows[i].style.backgroundColor == selectColor)   //is selected ?
                {
                    SendUp(RightTable.rows[i], RightTable.rows[i - 1]);
                }
            }
        }

        
        function SendUp(CurrentRow, PreviousRow) {

            PreviousRow.parentNode.insertBefore(CurrentRow, PreviousRow);
            ChangeRowNum();


        }

 
        function MoveDown() {
            var RightTable = document.getElementById("dgSalesGroupItems");
            var i = 0;
            var RowToMove = 0;
            var PreviousRow;
            var CurrentRow;

            for (i = 0; i < RightTable.rows.length - 1; i++) {
                if (RightTable.rows[i].style.backgroundColor == selectColor) {
                    RightTable.rows[i];

                    RowToMove = i;

                  
                    RightTable.rows[i].parentNode.appendChild(RightTable.rows[i]);

                    //this code moves the appended row up till it reaches 
                    //to one position less than its original position
                    for (i = RightTable.rows.length - 1; i > RowToMove + 1; i--) {
                        CurrentRow = RightTable.rows[i];
                        PreviousRow = RightTable.rows[i - 1];

                        SendUp(CurrentRow, PreviousRow);
                    }
                }
            }
        }    
    
    </script>
 
You have posted server-side code to a client-side forum. If you want help with this client-side, perhaps posting the real client-side code might be a better option. If you want to do this with .net, then you would be better off asking in the most appropriate .net forum.

Dan



Coedit Limited - Delivering standards compliant, accessible web solutions

Dan's Page [blue]@[/blue] Code Couch:
Code Couch Snippets & Info:
The Out Atheism Campaign
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top