Как перетасовать или изменить порядок строк в виде сетки при нажатии кнопки - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть radgrid, для которого я связал данные из кода позади, у меня есть две кнопки рядом с моим элементом управления сеткой, одна кнопка перемещения и кнопка перемещения. При выборе определенной строки в сетке и при нажатии кнопки перемещения мне нужно переместить строку вверх. Как мне поменять строки?

Я пытаюсь реализовать следующий код, но по какой-то причине мои события MoveRowUp () и MoveRowDown () не запускаются в JavaScript.

<head runat="server">  
    <title>Untitled Page</title> 
    <script type="text/javascript">  
                var SelectedRow;  
                function RowSelected(rowObject)  
                {  
                    SelectedRow = rowObject;  
                }  

                function MoveRowUp()  
                {  
                    if (SelectedRow && SelectedRow.Control.sectionRowIndex > 0)  
                    {  
                        SerializeReorderChanges(SelectedRow.Control.sectionRowIndex, SelectedRow.Control.sectionRowIndex - 1);  
                        SelectedRow.Control.swapNode(SelectedRow.Control.parentNode.rows[SelectedRow.Control.sectionRowIndex - 1]);  
                    }  
                }  

                function MoveRowDown()  
                {  
                    if (SelectedRow && SelectedRow.Control.sectionRowIndex < SelectedRow.Control.parentNode.rows.length - 1)  
                    {  
                        SerializeReorderChanges(SelectedRow.Control.sectionRowIndex, SelectedRow.Control.sectionRowIndex + 1);  
                        SelectedRow.Control.parentNode.rows[SelectedRow.Control.sectionRowIndex + 1].swapNode(SelectedRow.Control);  
                    }  
                }  

                function SerializeReorderChanges(index1, index2)  
                {  
                    var reorderInput = document.getElementById("ReorderChanges");  
                    if (reorderInput)  
                    {  
                        reorderInput.value += index1 + "," + index2 + ";";  
                    }  
                }  

                if(window.netscape)  
                {  
                    Node.prototype.swapNode = function(node)   
                    {  
                        var nextSibling = this.nextSibling;  
                        var parentNode = this.parentNode;  
                        node.parentNode.replaceChild(this, node);  
                        parentNode.insertBefore(node, nextSibling);  
                    }  
                }  
    </script> 
</head> 
<body> 
    <form id="form1" runat="server">  
        <div> 
            <input type="hidden" name="ReorderChanges" id="ReorderChanges">  
            <input type="button" value="Move selected row up" onclick="MoveRowUp()">  
            <br /> 
            <input type="button" value="Move selected row down" onclick="MoveRowDown()">  
            <radG:RadGrid ID="RadGrid1" OnNeedDataSource="RadGrid1_NeedDataSource" runat="server">  
                <ClientSettings> 
                    <Selecting AllowRowSelect="True"></Selecting> 
                    <ClientEvents OnRowSelected="RowSelected"></ClientEvents> 
                </ClientSettings> 
            </radG:RadGrid> 
            <input type="button" value="Apply changes server side" onclick="__doPostBack('<%= RadGrid1.ClientID %>','ReorderedRows:' + document.getElementById('ReorderChanges').value);">  
        </div> 
    </form> 
</body> 
</html> 
...