Bueno, siguiendo con el tema, lo retoque un poco al SP y quedo asi:
Código:
ALTER PROCEDURE [dbo].[GetArticulosPage]
@PageSize int,
@PageNumber int,
@OrderBy varchar(50),
@Nombre varchar(100)= NULL,
@IdLinea int,
@IdProv int
AS
SELECT id_articulo, padre, nombre, codigo, linea, razonSocial
FROM (
SELECT a.id_articulo, l.linea, l.padre, a.nombre, ap.codigo, p.razonSocial,
ROW_NUMBER() OVER (ORDER BY a.nombre, a.id_articulo) AS RowNumber
FROM ARTICULO a JOIN ARTICULO_PROVEEDOR ap
ON a.id_articulo = ap.id_articulo JOIN LINEA l
ON a.id_linea = l.id_linea JOIN PROVEEDOR p
ON ap.id_proveedor = p.id_proveedor
WHERE a.nombre like CASE WHEN @Nombre IS NOT NULL THEN '%'+@Nombre+'%'
ELSE '%%'
END
AND l.id_linea = CASE WHEN @IdLinea <> 0 THEN @IdLinea
ELSE a.id_linea
END
AND p.id_proveedor = CASE WHEN @IdProv <> 0 THEN @IdProv
ELSE ap.id_proveedor
END
) AS Articulo
WHERE RowNumber BETWEEN @PageSize * @PageNumber + 1
AND @PageSize * (@PageNumber + 1)
ORDER BY
CASE WHEN @OrderBy = 'razonSocial' THEN razonSocial
WHEN @OrderBy = 'padre' THEN padre
WHEN @OrderBy = 'nombre' THEN nombre
WHEN @OrderBy = 'linea' THEN linea
ELSE nombre
END
El tema ahora es que el order by solo funciona con datos que son numericos (id_articulo, padre y codigo en mi caso), y me da error en los datos que son varchar().
Sigue sin funcionar el tema de ASC y DESC
Cualquier ayuda, es bienvenida.
Saludos