2011-09-15 4 views
0

J'ai été abandonné dans un projet sharepoint 2007, et j'ai relativement peu d'expérience dans la modification de parties Web existantes.MOSS 2007: Ajout de filtre à la partie Web ListView

Ma première tâche consiste à ajouter un filtre à deux colonnes sur trois dans une vue de liste. Mon Lead Dev suggère d'essayer d'ajouter un filtre de zone de liste déroulante jquery, et un autre dev suggère d'étendre la partie web et de surcharger certaines fonctionnalités. Ce que je pense être une bonne option est de changer le menu contextuel pour les en-têtes de vue de liste, de sorte qu'au lieu de "Afficher les choix de filtre" en levant une liste déroulante standard qui répond seulement à la première lettre, il y aurait une jquery boîte combo. Et peut-être que si l'entreprise le demande, changez le libellé de cette option.

Ma question est la suivante: quel serait le bon chemin à suivre? En outre, quelles ressources sont là en plus de traîner autour des livres et des blogs sont là pour guider un débutant sp pour faire ceci?

Merci.

Répondre

1

Que diriez-vous quelque chose comme ceci:

<script src="http://www.google.com/jsapi"></script> 

    <script> 
     google.load("jquery", "1.2.6"); 
     google.setOnLoadCallback(function() { 

      $(document).ready(function() 
      { 
       jQuery.extend(jQuery.expr[':'], { 
       containsIgnoreCase: "(a.textContent||a.innerText||jQuery(a).text()||'').toLowerCase().indexOf((m[3]||'').toLowerCase())>=0" 
    }); 

    $("table.ms-listviewtable tr.ms-viewheadertr").each(function() 
    { 
     if($("td.ms-vh-group", this).size() > 0) 
     { 
      return; 
     } 
     var tdset = ""; 
     var colIndex = 0; 
     $(this).children("th,td").each(function() 
     { 
      if($(this).hasClass("ms-vh-icon")) 
      { 
       // attachment 
       tdset += "<td></td>"; 
      } 
      else 
      { 
       // filterable 
       tdset += "<td><input type='text' class='vossers-filterfield' filtercolindex='" + colIndex + "' /></td>"; 
      } 
      colIndex++; 
     }); 
     var tr = "<tr class='vossers-filterrow'>" + tdset + "</tr>"; 
     $(tr).insertAfter(this); 
    }); 

     $("input.vossers-filterfield") 
      .css("border", "1px solid #7f9db9") 
      .css("width", "100%") 
      .css("margin", "2px") 
      .css("padding", "2px") 
      .keyup(function() 
     { 
      var inputClosure = this; 
      if(window.VossersFilterTimeoutHandle) 
      { 
       clearTimeout(window.VossersFilterTimeoutHandle); 
      } 
      window.VossersFilterTimeoutHandle = setTimeout(function() 
      { 
      var filterValues = new Array(); 
      $("input.vossers-filterfield", $(inputClosure).parents("tr:first")).each(function() 
      { 
       if($(this).val() != "") 
       { 
        filterValues[$(this).attr("filtercolindex")] = $(this).val(); 
       } 
      }); 
      $(inputClosure).parents("tr.vossers-filterrow").nextAll("tr").each(function() 
      { 
       var mismatch = false; 
       $(this).children("td").each(function(colIndex) 
       { 
        if(mismatch) return; 
        if(filterValues[colIndex]) 
        { 
         var val = filterValues[colIndex]; 
         // replace double quote character with 2 instances of itself 
         val = val.replace(/"/g, String.fromCharCode(34) + String.fromCharCode(34)); 
         if($(this).is(":not(:containsIgnoreCase('" + val + "'))")) 
         { 
          mismatch = true; 
         } 
        } 
       }); 
       if(mismatch) 
       { 
        $(this).hide(); 
       } 
       else 
       { 
        $(this).show(); 
       } 
       }); 
      }, 250); 
     }); 
    }); 
}); 

Il devra être ajouté à la page via un éditeur de contenu Web partie.