Partage
  • Partager sur Facebook
  • Partager sur Twitter

communication javascript sharepoint

Recupérer les données de la ligne cochée

    9 novembre 2011 à 14:22:54

    Bonjour, je travaille sur un site sharepoint wss 3.0 et à l'aide du javascript j'ai pu ajouter un feature qui permet d'ajouter une colonne de type checkbox.
    Mon problème réside que j'arrive pas à récupérer les données de la ligne sélectionnée.
    voici le fichier javascript que j'ai utilisé afin d'ajouter la colonne checkbox.

    <script type="text/javascript" src="/_layouts/jQuery/jquery.min.js"></script>
    <script type="text/javascript">
     
    function CreateParentInputCheckBox(webPartId) 
    {    return $("<th nowrap scope='col' class='ms-vh2'></th>").append(               
         $("<input type='checkbox' title='(de)select all items' />").attr("id", webPartId + "0").click(function() 
            { var checked = $(this).attr("checked");$("[id^=" + webPartId + "_]").attr("checked", checked); })
          );           
    }
     
    function CreateChildInputCheckBox(webPartId, itemId)
    {    
        return $("<td></td>").append($("<input type='checkbox' />").attr("id", webPartId + "_" + itemId).val(itemId).click(function() 
        { $("#" + webPartId + "0").attr("checked", $(this).attr("checked") && $("[id^=" + webPartId + "_]:not(:checked)").length == 0); })            
        );
    } 
     
    function AddCheckBoxesToListView(webPartId) 
    {    
        $("#" + webPartId + " table.ms-listviewtable>tbody").find(">tr.ms-viewheadertr").prepend(CreateParentInputCheckBox(webPartId)).end()
        .find(">tr:not(.ms-viewheadertr)").each(function() 
        { var itemId = $(this).find("td.ms-vb-title>table[id]").attr("id");                    
            if (itemId) 
            {
                $(this).prepend(CreateChildInputCheckBox(webPartId, itemId));
            }                
         });
    }
     
    function IsSelectable(webPartId) 
    {    
        var selectableItems = $("#" + webPartId + " table.ms-listviewtable>tbody>tr:not(.ms-viewheadertr)>td.ms-vb-title>table[id]").length;   
        return selectableItems > 0;
    } 
     
    function RemoveCheckBoxesFromListView(webPartId) 
    {    
        $("[id^=" + webPartId + "_], #" + webPartId + "0").parent().remove();
    } 
     
    function GetSelectedItemsString(webPartId) {
        return GetSelectedItemsArray(webPartId).join(",");
    }
    /*
    function GetSelectedItemsString(webPartId) 
    {    
        var selectedIds = new Array();
        $("[id^=" + webPartId + "_]:checked").each(function() 
        {
            selectedIds.push($(this).val());
         });     
         return selectedIds.join(",");
    }
     */
    function ListItemSelection_ButtonClick(senderId, webPartId) 
    {   
      //jQueryon mozilla does not work with namespaces. We have to work with plain old javascript here...    
        var sender = document.getElementById(senderId);     
        if (sender.getAttribute("remove")) 
        {        
            RemoveCheckBoxesFromListView(webPartId);        
            sender.setAttribute("text" ,"Enable item selection");      
            sender.setAttribute("description", "Enable the selection of items.");
            sender.removeAttribute("remove");
        }
        else 
        {        
            AddCheckBoxesToListView(webPartId);
            sender.setAttribute("text", "Disable item selection")       
            sender.setAttribute("description", "Disable the selection of items.");        
            sender.setAttribute("remove", true);    
        }
    }
     
    function ListItemSelection_Init(senderId, webPartId) 
    {    
        if (!IsSelectable(webPartId)) 
        {        
            var sender = document.getElementById(senderId);        
            sender.parentNode.removeChild(sender);    
        }
    }
     
     
     
    /* Add this function */
    function GetSelectedItemsArray(webPartId){
        var selectedIds = new Array();
        $("[id^=" + webPartId + "_]:checked")
            .each(function() {
                    selectedIds.push($(this).val());
            });
     
        return selectedIds;
    }
     
     
    var wpID; // Used to identify the current webpart. We need this to find out where to apply the checkboxes
     
    var existingMethod = ExpGroupReceiveData; // overriding ExpGroupReceiveData method to make it possible to add checkboxes to received items
     
    ExpGroupReceiveData = function(){
        existingMethod.apply(this , arguments); // apply the original properties of the function
     
        if (!wpID){ // let's identify the webpart in question
            wpID = $('tbody#titl'+arguments[1]).parents('div[id^=WebPart]').attr('id');
        }
     
        var selectedItems = GetSelectedItemsArray(wpID); // let's save state of selected checkboxes
     
        RemoveCheckBoxesFromListView(wpID); // remove existing checkboxes    
        AddCheckBoxesToListView(wpID); // add checkboxes to webpart group items
     
        $.each(selectedItems, function(i){ // reapply state to previously selected checkboxes
            $('#' + wpID + '_' + selectedItems[i]).attr("checked", true);
        });
    }
    </script>
     
    <script type="text/javascript">
    $(function(){
      //Spécification à la main du qualifier qui m'intéresse
      var monWP ='WebPartWPQ1';
      AddCheckBoxesToListView(monWP);
      $('#showSelect').click(function(){
        //alert(GetSelectedItemsArray(monWP));
        $('#selectedItemsList').html(GetSelectedItemsArray(monWP).join(';'));
      });
    });
    </script>
    <a href="#" id="showSelect">Cliquer ici pour voir les éléments</a>
    <div id="selectedItemsList"></div>
    


    j'attends vos commentaires.

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      9 novembre 2011 à 22:53:33

      Le message qui suit est une réponse automatique.
      Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
      Nous sommes néanmoins ouvert à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


      Merci d'utiliser les balises de code


      Bonjour,

      Les forums du Site du Zér0 disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
      Tu as posté un code source sans utiliser cette fonctionnalité. Pourrais-tu éditer ton message afin d'ajouter ces balises ? Pour cela, sélectionne ton code à colorer et utilise le bouton Image utilisateur afin de choisir la coloration adaptée. Veille à bien choisir le langage de programmation afin que la coloration soit pertinente.

      De plus, veille à ce que ton code soit correctement indenté.

      Afin de ne pas surcharger le sujet, ne poste pas ton code coloré dans un nouveau message mais édite le premier (grâce au bouton Image utilisateur).

      Cela aura pour effet de "colorer" ton code et donc d'en faciliter grandement la lecture. Tu auras ainsi beaucoup plus de chances d'avoir des réponses.

      Voici un exemple de code non coloré (mauvais exemple) :
      int main(int argc, char *argv[])
      {
      long choixOperation;

      printf("Choisissez l'operation a effectuer");
      /* etc. */
      }

      Voici maintenant le même code coloré, utilisant la balise "code" (bon exemple) :
      int main(int argc, char *argv[])
      {
          long choixOperation;
      
          printf("Choisissez l'operation a effectuer");
          /* etc. */
      }
      


      C'est plus clair n'est-ce pas ? ;)

      Pour plus d'information à ce sujet, tu peux lire le tutoriel général sur le zCode.

      Merci de ta compréhension. :)
      • Partager sur Facebook
      • Partager sur Twitter
      Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »

      communication javascript sharepoint

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown