Recuperar filas anteriores y siguientes en una tabla usando jQuery

Estoy usando ASP.NET para crear una página con un GridView que es muy editable para el usuario final. Básicamente, todas las filas contienen cuadros de texto (en lugar de texto estático) que el usuario puede editar cuando lo desee. Nunca se produce devolución de datos, excepto cuando hace clic en el botón Guardar en la parte inferior de la página. Luego, recorro cada fila de la cuadrícula, recupero los valores en los controles de cada fila y los guardo de nuevo en la base de datos.

Ahora estoy tratando de implementar el intercambio de dos filas (para mover una fila hacia arriba o hacia abajo) en Javascript, y para eso necesito alguna forma de recuperar las filas anteriores y siguientes en una tabla.

En este momento, mi GridView contiene un HiddenField como la primera columna, que contiene el ID único del elemento de datos (por supuesto, necesito esto para almacenarlo en la base de datos). Para otros fines (eliminar una fila), he descubierto cómo recuperar este Id, que es esto:

var itemHf = $(this).parent().parent().parent().find(':input');

Hay tantas llamadas 'primarias' porque esto ocurre en el evento de clic de una Imagen, que está dentro de un LinkButton, que está dentro de la última columna de mi cuadrícula. Entonces, el primer padre es el LinkButton, el siguiente es la celda de la tabla y, finalmente, la fila de la tabla. Entonces, supongo que lafind(':input')a función @ devuelve el primer elemento de entrada en esta fila (que en mi caso es el campo oculto que contiene la identificación).

Entonces, usando el mismo método puedo obtener elcorrient fila

var row = $(this).parent().parent().parent();

¿Pero cómo obtengo las filas anteriores y siguientes?

Además, una vez que tenga esas filas, necesitaré recuperar valores de más elementos de entrada. Sé que puedo encontrar el primero usandofind(':input'), pero ¿cómo encuentro el segundo y el tercer elemento de entrada en esta fila de la tabla?

EDITA
No tengo ningún HTML en este momento, pero aquí está el marcado ASP.NET para la cuadrícula:

        <asp:GridView runat="server" ID="grid" AutoGenerateColumns="False" 
            onrowcommand="grid_RowCommand" onrowdeleting="grid_RowDeleting">
            <Columns>

                <!-- Move Up button -->
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton runat="server" OnClientClick="return false;">
                            <asp:Image ImageUrl="~/Images/moveUp.png" AlternateText="moveUp" runat="server" CssClass="moveUp" ID="moveUp" />
                        </asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>

                <!-- Move Down button -->
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton runat="server" OnClientClick="return false;">
                            <asp:Image ImageUrl="~/Images/moveDown.png" AlternateText="moveDown" runat="server" CssClass="moveDown" ID="moveDown" />
                        </asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>

                <!-- ID Hidden Field -->
                <asp:TemplateField>
                    <ItemTemplate>
                            <asp:HiddenField runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "Id") %>' />
                    </ItemTemplate>
                </asp:TemplateField>

                <!-- Name textbox field -->
                <asp:TemplateField HeaderText="Naam">
                    <ItemTemplate>
                            <asp:TextBox runat="server" Width="200px" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' />
                    </ItemTemplate>
                </asp:TemplateField>

                <!-- Price textbox field -->
                <asp:TemplateField HeaderText="Prijs">
                    <ItemTemplate>
                            <asp:TextBox runat="server" Width="50px" Text='<%# DataBinder.Eval(Container.DataItem, "Price") %>' />
                    </ItemTemplate>
                </asp:TemplateField>

                <!-- Delete button -->
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton runat="server" OnClientClick="return false;">
                            <asp:Image ImageUrl="~/Images/delete.png" AlternateText="delete" runat="server" CssClass="delete" ID="delete" />
                        </asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

Y aquí hay un ejemplo de jQuery que estoy usando:

    $(document).ready(function () {

        $('table td img.delete').click(function () {
            var id = $(this).closest('tr').find(':input').val();
            alert(id);
        });
    });

Respuestas a la pregunta(3)

Su respuesta a la pregunta