a ver, vamos por partes.
la propiedad "dataset" lo que haces es contener a todos los atributos que empiecen con "data-", tu estas usando: "dataset.idProductos" con lo cual, el tr deberias armarlo asi:
Código PHP:
Ver originalecho "<tr data-id-productos=\"$row[4]\">
Pero la sintaxis CamelCase no es recomendable para html, ya que introduce un problema que es la sensibilidad a mayusculas, "idProductos" no es lo mismo que "idproductos" en determinados lugares, ademas de que no es descriptivo (si lo es, pero podria ser mejor), una buena opcion seria:
Código PHP:
Ver originalecho "<tr data-idproducto=\"$row[4]\">
Código Javascript
:
Ver originalvar idProd= this.parentNode.parentNode.dataset.idproducto;
Notese que se hace referencia al id en singular no en plural, es una cuestion gramatical pero que facilita al lector saber que esa variable tiene un valor escalar y no un array. (piensa en que si tu mismo dentro de 6 meses vuelves a mirar el codigo que tu escribistes, lo que querras sera acordarte lo mas rapido posible de que es lo que hace, nombres erroneos te dificultaran la tarea)
Se entiende la idea?
Puede interesarte
este link para entender mejor el concepto.