2009-02-27 3 views
4

Wenn ich Elemente in einem SPGridView mit der GroupField-Eigenschaft gruppiere, funktioniert die Gruppierung zwar gut, aber die Gesamtzahl der Zeilen wird nicht wie in einer Standard-SharePoint-Liste angezeigt. In der Regel zeigt SharePoint den Zähler neben der Gruppe in Klammern an (d. H. Gruppe 1 (5)). Gibt es eine Möglichkeit, diese Funktionalität zu aktivieren?Gruppensummen in SPGridView

Antwort

0

haben Sie versucht, die DisplayGroupFieldName Eigenschaft auf True zu setzen?

SPGridView class documentation

+0

Nein, das hat es nicht getan. Wenn DisplayGroupFieldName wahr ist, sieht die Gruppierung wie "Gruppenfeldname: Gruppe 1" aus. Wenn DisplayGroupFieldName false ist, sieht die Gruppierung wie "Gruppe 1" aus. – joegtp

0

Ich hatte einen kurzen Blick auf den Code und sogar die SPGridView zwingende scheint nicht eine einfache „Haken“ für diese außer Kraft setzen zu lassen.

Sie können möglicherweise Javascript erstellen, um dies zu tun, aber es wäre bei weitem nicht unterhaltsam.

0

Javascript funktioniert! Nat rat hat mir geholfen!

Siehe jquery Beispiel unten:

$(".ms-gb td:contains('" + groupName + "')") 
    .append("<div class='stat'>text</div>") 
0

Wenn Sie Javascript nicht verwenden möchten, können Sie durch die Tabelle laufen können und die Zeilen in jeder Gruppe zählen.

Der Nachteil ist, dass Sie wahrscheinlich alle Zeilen zählen müssen und dann zurückgehen und den Gruppennamen in jeder Zeile aktualisieren müssen.

Zum Beispiel:

ID Value Group 
1 One  GroupA 
2 Two  GroupA 
3 Three GroupB 
4 Four GroupB 
5 Five GroupB 

2 in GroupA
3 in GroupB

ID Value Group 
1 One  GroupA (2) 
2 Two  GroupA (2) 
3 Three GroupB (3) 
4 Four GroupB (3) 
5 Five GroupB (3) 
-1

Ich weiß, diese Frage ist alt, aber trotzdem:

var rows = document.getElementById("your_table").getElementsByTagName("TR"); 
for (var i = 0; i < rows.length; i++) { 
    if (rows[i].className == 'ms-gb') { 
     var count = 0; 
     var el = rows[i].nextSibling; 
     while (el) { 
      if (el.className != 'ms-gb') 
       count++; 
      else 
       break; 
      el = el.nextSibling; 
     } 
     rows[i].children[0].innerHTML += " <span dir='ltr'>(" + count + ")</span>"; 
     } 
    } 

Sie fallen können. getElementById ("your_table") Teil, wenn Sie es trotzdem auf die ganze Seite anwenden wollen, ot Platzieren Sie die Gridview in einem Steuerelement mit dieser ID.