none
Elementos Web conectados RRS feed

  • Pregunta

  • Hola, tengo una pagina web en Sharepoint 2007 con (wss 3.0) que contiene 4 elementos web (listas).

    Estas listas estan conectadas entre si para que al seleccionar un elemento de la primera lista me filtre automaticamente el resto de ellas. Esto lo hace a traves de un campo llamado Padre_ID que contiene una busqueda de la lista principal (osea una clave padre-hijo como las de toda la vida).

    El problema esta en que al crear un nuevo elemento (newform) no se como enviarle el ID del elemento principal para que lo ponga automaticamente en el campo que le corresponde y asi "ligar" los dos elementos (padre e hijo), lo he de seleccionar a mano.

    Como herramienta uso sharepoint designer y la base principal esta en WSS 3.0.

     ¿Podriais ayudarme? Gracias.

    lunes, 19 de julio de 2010 15:03

Respuestas

  • Lo prometido es deuda.

    Contar lo primero que desde la url que pasaste alcance finalmente esta:

    http://patrikluca.blogspot.com/2008/01/how-to-set-default-values-based-on_20.html

    Donde lo explican un poquito mejor.. Al menos para mi.

    Yo todo esto lo hice en una nueva aspx desde la que "veo" mi elemento (como xsl) y 3 elementos web conectados (previamente conectados en xsl como dice la web indicada).

    Desde estos 3 elementos he colocado un hyperlink a las NewForm (modificadas).aspx y alli le coloco el codigo (en mi caso el elemento buscado es un SELECT (recordar quitar el DDL de la busqueda, en la web no rula bien, al menos a mi no).

    Mi codigo (va con Alerts de debug.. si, es deformacion profesional, vengo de COBOL).

     

    <asp:Content id="Content1" runat="Server" contentplaceholderid="PlaceHolderMain">
    <script type="text/javascript">
    
    _spBodyOnLoadFunctionNames.push("fillDefaultValues");
    
    function fillDefaultValues(){
    
    alert("Entrando");
    
     var qs=location.search.substring(1,location.search.length);
     var args=qs.split("&");
     var vals=new Object();
     for (var i=0; i<args.length;i++){
     var nameVal=args[i].split("=");
     var temp=unescape(nameVal[1]).split('+');
     nameVal[1]=temp.join('');
     vals[nameVal[0]]=nameVal[1];
     }
     
     
     var category=vals["Evento"];
    
    alert(category);
     
     if(category==undefined)
     return;
     var theSelect=getTagFromIdentifierAndTitle("SELECT","","Evento");
     if(theSelect==null){
     alert("Es null, no lo ha encontrado como Select");
     var theInput=getTagFromIdentifierAndTitle("input","","Evento");
     if(theInput==null){
      alert("Es null, no lo ha encontrado como Input");
      return;
     }
     theInput.value=category;
      alert("Cambiado con exito!!");
     freezeValue(theInput);
     }
     else {
     theSelect.value=category;
       alert("Cambiado con exito!!");
     freezeValue(theSelect);
     }
    }
    
    function setSelectedOption(select,value){
     var opts=select.options;
     var l=opts.length;
     if(select==null)
     return;
     for(var i=0; i<l; i++){
     if(opts[i].value==value){
      select.selectedIndex=i;
      return true;
     }
     }
    }
    function getTagFromIdentifierAndTitle(tagName,identifier,title){
     var len=identifier.length;
     var tags=document.getElementsByTagName(tagName);
     
     alert(tags);
     
     for(var i=0;i<tags.length;i++){
     var tempString=tags[i].id;
     alert("title elemento y luego titulo buscado");
       alert(tags[i].title);
       alert(title);
    
    
     if(tags[i].title==title && (identifier=="" ||
      tempString.indexOf(identifier)==tempString.length - len)){
    		alert("Encontrado!!!");
      return tags[i];
     }
     }
     return null;
    }
    function freezeValue(tag){
     var chosen=tag.options.selectedIndex;
     tag.onchange=function(){
     tag.options.selectedIndex=chosen;
     }
     tag.className="ms-MenuUIItemTableCellDisabled";
    }
    </script>
    
    <WebPartPages:DataFormWebPart runat="server" IsIncluded="True".....>
    

    Nota: El ELEMENTO que busco es un SELECT titulado EVENTO, y el parametro se llama igual.

     

    Espero que os sirva.

    • Marcado como respuesta Brisha miércoles, 6 de octubre de 2010 15:32
    miércoles, 21 de julio de 2010 15:31

Todas las respuestas

  • Muy bueno el enlace, gracias, me es muy util.

    Creo que me servira.

    martes, 20 de julio de 2010 7:48
  • Por nada. Son sólo ideas. Si se te ocurren algunas otras ideas y deseas compartirlas, genial, puedes comentar en el post. Es un tema algo "oscuro" y está bueno ir conociendo como lo ha resuelto cada uno.

    Saludos!


    Juan Pablo.
    surpoint.blogspot.com
    geeks.ms/blogs/jpussacq
    @jpussacq
    HispaPoint: comunidad sharepoint de habla hispana
    martes, 20 de julio de 2010 12:49
  • XDD En que lo tenga "apañado" prometo poner el codigo.

     

    Y si, es un tema demasiado oscuro.

    Quiero creer que esto es porque no tengo todavia el tatuaje y la tunica de acolito shareponiano.

    Pero con la practica y la perseverancia nos seran desvelados los oscuros secretos del sharepoint. Asi lo dice el maestro..

    martes, 20 de julio de 2010 13:55
  • Lo prometido es deuda.

    Contar lo primero que desde la url que pasaste alcance finalmente esta:

    http://patrikluca.blogspot.com/2008/01/how-to-set-default-values-based-on_20.html

    Donde lo explican un poquito mejor.. Al menos para mi.

    Yo todo esto lo hice en una nueva aspx desde la que "veo" mi elemento (como xsl) y 3 elementos web conectados (previamente conectados en xsl como dice la web indicada).

    Desde estos 3 elementos he colocado un hyperlink a las NewForm (modificadas).aspx y alli le coloco el codigo (en mi caso el elemento buscado es un SELECT (recordar quitar el DDL de la busqueda, en la web no rula bien, al menos a mi no).

    Mi codigo (va con Alerts de debug.. si, es deformacion profesional, vengo de COBOL).

     

    <asp:Content id="Content1" runat="Server" contentplaceholderid="PlaceHolderMain">
    <script type="text/javascript">
    
    _spBodyOnLoadFunctionNames.push("fillDefaultValues");
    
    function fillDefaultValues(){
    
    alert("Entrando");
    
     var qs=location.search.substring(1,location.search.length);
     var args=qs.split("&");
     var vals=new Object();
     for (var i=0; i<args.length;i++){
     var nameVal=args[i].split("=");
     var temp=unescape(nameVal[1]).split('+');
     nameVal[1]=temp.join('');
     vals[nameVal[0]]=nameVal[1];
     }
     
     
     var category=vals["Evento"];
    
    alert(category);
     
     if(category==undefined)
     return;
     var theSelect=getTagFromIdentifierAndTitle("SELECT","","Evento");
     if(theSelect==null){
     alert("Es null, no lo ha encontrado como Select");
     var theInput=getTagFromIdentifierAndTitle("input","","Evento");
     if(theInput==null){
      alert("Es null, no lo ha encontrado como Input");
      return;
     }
     theInput.value=category;
      alert("Cambiado con exito!!");
     freezeValue(theInput);
     }
     else {
     theSelect.value=category;
       alert("Cambiado con exito!!");
     freezeValue(theSelect);
     }
    }
    
    function setSelectedOption(select,value){
     var opts=select.options;
     var l=opts.length;
     if(select==null)
     return;
     for(var i=0; i<l; i++){
     if(opts[i].value==value){
      select.selectedIndex=i;
      return true;
     }
     }
    }
    function getTagFromIdentifierAndTitle(tagName,identifier,title){
     var len=identifier.length;
     var tags=document.getElementsByTagName(tagName);
     
     alert(tags);
     
     for(var i=0;i<tags.length;i++){
     var tempString=tags[i].id;
     alert("title elemento y luego titulo buscado");
       alert(tags[i].title);
       alert(title);
    
    
     if(tags[i].title==title && (identifier=="" ||
      tempString.indexOf(identifier)==tempString.length - len)){
    		alert("Encontrado!!!");
      return tags[i];
     }
     }
     return null;
    }
    function freezeValue(tag){
     var chosen=tag.options.selectedIndex;
     tag.onchange=function(){
     tag.options.selectedIndex=chosen;
     }
     tag.className="ms-MenuUIItemTableCellDisabled";
    }
    </script>
    
    <WebPartPages:DataFormWebPart runat="server" IsIncluded="True".....>
    

    Nota: El ELEMENTO que busco es un SELECT titulado EVENTO, y el parametro se llama igual.

     

    Espero que os sirva.

    • Marcado como respuesta Brisha miércoles, 6 de octubre de 2010 15:32
    miércoles, 21 de julio de 2010 15:31