none
checkBox tickeados RRS feed

  • Pregunta

  • Masters,

    Tengo un formulario y necesito saber cuantos checkBox de este fueron tickeados al momento de grabar. y en base a esto cerrar o dejar abierto el caso(formulario).

    espero haberme explicado bien.

    Gracias anticipadas


    netZio

    jueves, 14 de marzo de 2013 18:20

Respuestas

  • Hola Netzio, 

    te recomiendo dos opciones, o hacerlo uno a uno (con los nombres "hardcodeados"), o sino algo mas dinamico, recorriendo todos los campos del formulario: http://msdn.microsoft.com/en-us/library/gg309324.aspx

    ali tienes este ejemplo de js que puede guiarte:

    SDK.UISamples.getMultipleControlAttributes = function () {
     var attributesOnForm = [];
     var multipleControlAttributes = [];
    
     Xrm.Page.ui.controls.forEach(function (control, index) {
      if (SDK.UISamples.doesControlHaveAttribute(control)) {
       var attribute = control.getAttribute();
       if (attribute != null) {
        var attributeName = attribute.getName();
    
        // Check if the attribute has already been added to the attributesOnForm collection
        if (SDK.UISamples.arrayContainsValue(attributesOnForm, attributeName)) {
         // Check if the attribute has already been added to the
         // multipleControlAttributes collection.  This would happen
         // if an attribute has 3+ controls on the form.
         if (SDK.UISamples.arrayContainsValue(multipleControlAttributes, attributeName) == false) {
          multipleControlAttributes.push(attributeName);
         }
        }
        else {
         attributesOnForm.push(attributeName);
        }
       }
      }
     });
    
    
     var message = "";
     if (multipleControlAttributes.length > 0) {
      message = "The following attributes have multiple controls on the form:\n\n- ";
      message += multipleControlAttributes.join("\n- ");
     }
     else {
      message = "There are no attributes on the form with multiple controls";
     }
    
     alert(message);
    };
    
    SDK.UISamples.doesControlHaveAttribute = function (control) {
     var controlType = control.getControlType();
     return controlType != "iframe" && controlType != "webresource" && controlType != "subgrid";
    };
    
    SDK.UISamples.arrayContainsValue = function (array, value) {
     for (var i in array) {
      if (array[i] == value)
       return true;
     }
    
     return false;
    };
    


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"

    • Marcado como respuesta Netzio viernes, 15 de marzo de 2013 14:13
    jueves, 14 de marzo de 2013 18:28
    Moderador
  • Lo que te pasé es solo un ejemplo que en el artículo de la SDK explica como implementarlo y probarlo.

    lo que quieres hacer requiere desarrollo, y tal y como lo planteas ahora (con un workflow y demas), creo que lo mejor sería hacerlo en un "plugin". de esta manera abarcas todas las posibilidades en que se puedan actuaizar dichos registros (a traves de workflows, web services, etc)

    yo creo que lo mejor será que vayas a por un plugin, en donde con dos imágenes (PRE y POST) puedes comparar que campos se han modificado, y calcularlo.

    un saludo,


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"

    • Marcado como respuesta Netzio viernes, 15 de marzo de 2013 14:13
    viernes, 15 de marzo de 2013 7:45
    Moderador

Todas las respuestas

  • Hola Netzio, 

    te recomiendo dos opciones, o hacerlo uno a uno (con los nombres "hardcodeados"), o sino algo mas dinamico, recorriendo todos los campos del formulario: http://msdn.microsoft.com/en-us/library/gg309324.aspx

    ali tienes este ejemplo de js que puede guiarte:

    SDK.UISamples.getMultipleControlAttributes = function () {
     var attributesOnForm = [];
     var multipleControlAttributes = [];
    
     Xrm.Page.ui.controls.forEach(function (control, index) {
      if (SDK.UISamples.doesControlHaveAttribute(control)) {
       var attribute = control.getAttribute();
       if (attribute != null) {
        var attributeName = attribute.getName();
    
        // Check if the attribute has already been added to the attributesOnForm collection
        if (SDK.UISamples.arrayContainsValue(attributesOnForm, attributeName)) {
         // Check if the attribute has already been added to the
         // multipleControlAttributes collection.  This would happen
         // if an attribute has 3+ controls on the form.
         if (SDK.UISamples.arrayContainsValue(multipleControlAttributes, attributeName) == false) {
          multipleControlAttributes.push(attributeName);
         }
        }
        else {
         attributesOnForm.push(attributeName);
        }
       }
      }
     });
    
    
     var message = "";
     if (multipleControlAttributes.length > 0) {
      message = "The following attributes have multiple controls on the form:\n\n- ";
      message += multipleControlAttributes.join("\n- ");
     }
     else {
      message = "There are no attributes on the form with multiple controls";
     }
    
     alert(message);
    };
    
    SDK.UISamples.doesControlHaveAttribute = function (control) {
     var controlType = control.getControlType();
     return controlType != "iframe" && controlType != "webresource" && controlType != "subgrid";
    };
    
    SDK.UISamples.arrayContainsValue = function (array, value) {
     for (var i in array) {
      if (array[i] == value)
       return true;
     }
    
     return false;
    };
    


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"

    • Marcado como respuesta Netzio viernes, 15 de marzo de 2013 14:13
    jueves, 14 de marzo de 2013 18:28
    Moderador
  • Demian, q tal...gracias por la respuesta

    pero nose como implementarlo, esto lo quiero hacer en el evento onsave del formulario, recorrer los checkbox del formulario (q son como 20) y si hay tickeados 3 por ejemplo enviar un mail a traves de un workFlow.

    no logre utilizar lo que me dejaste...


    netZio

    jueves, 14 de marzo de 2013 18:59
  • Lo que te pasé es solo un ejemplo que en el artículo de la SDK explica como implementarlo y probarlo.

    lo que quieres hacer requiere desarrollo, y tal y como lo planteas ahora (con un workflow y demas), creo que lo mejor sería hacerlo en un "plugin". de esta manera abarcas todas las posibilidades en que se puedan actuaizar dichos registros (a traves de workflows, web services, etc)

    yo creo que lo mejor será que vayas a por un plugin, en donde con dos imágenes (PRE y POST) puedes comparar que campos se han modificado, y calcularlo.

    un saludo,


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"

    • Marcado como respuesta Netzio viernes, 15 de marzo de 2013 14:13
    viernes, 15 de marzo de 2013 7:45
    Moderador
  • Demian,

    Melo temia, bueno implementare un Plugin....

    Gracias


    netZio

    viernes, 15 de marzo de 2013 14:13