Temat: Modyfikacja wydruku - Zamówione towary

Witam,
Mam problem z pogrupowaniem towarów na wydruku. Zmodyfikowałem (w zasadzie z dwóch raportów zrobiłem jeden) raport Zamówione towary (Zamówienia od odbiorców). Mam problem z pogrupowaniem towarów wg. cechy. Po uruchomieniu wydruku wyskakuje okienko z parametrami, gdzie wybieram: Termin dostawy, Magazyn, Cechę towaru i opcjonalnie wartość cechy towaru (cecha np. Producent, a wartość to np. Salomon). Jak wybiorę do wydruku cechę towaru i jej wartość to wydruk jest ok - wybiera z zamówień tylko towary np. Salomon, ale jak wybiorę w parametrach tylko cechę towaru (Producent) to na wydruku nie grupują mi się poprawnie towary. Wygląda to tak, że np. na pierwszym zamówieniu mam dwie pozycje: jedna to towar producenta Salomon, a drugi to producent Tyrolia, a na drugim zamówieniu mam jedną pozycję producenta Salomon, to mój wydruk wygląda tak: pojawia się wiersz grupujący z nazwą Salomon, poniżej nazwa towaru, następnie wiersz grupujący z nazwą Tyrolia, poniżej nazwa towaru i znowu wiersz grupujący z nazwą Salomon a poniżej nazwa towaru. Czyli działa to tak, że z każdego zamówienia zbiera po kolei towary, ale ich tak naprawdę nie grupuje. poniżej kawałek kodu z tego "mojego" raportu. Podejrzewam, że w tej części raportu jest problem, dokładniej mówiąc chyba lista jest nie tak zbudowana, ale to tylko moje podejrzenia.
Za pomoc (poprawę kodu) z góry dziękuję.

Pozdrawiam

void OnContextLoad(Object sender, EventArgs args)
{

string wartosci = String.IsNullOrEmpty(Parametry.WartoscCechyTowaru) ? "" : Parametry.WartoscCechyTowaru;
string[] wartosciTable = wartosci.Split(new char[] { ',' } );
Soneta.Handel.Forms.DokHandloweViewInfo.WParams pars = (Soneta.Handel.Forms.DokHandloweViewInfo.WParams)dc[typeof(Soneta.Handel.Forms.DokHandloweViewInfo.WParams)];


Row[] rows = (Row[])dc[typeof(Row[])];
Hashtable result = new Hashtable();
int licznik = 0;

StanMagazynuWorker smw = new StanMagazynuWorker();
smw.Magazyn = Parametry.Magazyn;
string x = "";
foreach (DokumentHandlowy dokument in rows)
{
if (++licznik % 30 == 0)
System.Diagnostics.Trace.Write(licznik * 100 / rows.Length, "Progress");
if (dokument.Zatwierdzony)
{
foreach (PozycjaDokHandlowego pozycja in dokument.Pozycje)
{
if (dokument.Dostawa.Termin == Parametry.DataDostawy) // wybieram do zestawienie tylko zamówienia dla wybranego terminu dostawy

{
if (Parametry.WartoscCechyTowaru != null)
{

bool jestZgodnaWartosc = false;
foreach (string wart in wartosciTable)
{
if (!string.IsNullOrEmpty(wart.Trim()) && wart.Trim() == pozycja.Towar.Features[Parametry.CechaTowaru].ToString())
{
jestZgodnaWartosc = true;
break;
}
}

if (!jestZgodnaWartosc)
{
continue;
}
}


if (pozycja.Towar.Kod == "02725")
{
x += pozycja.Dokument.Numer.Pelny + ":" + PozostałaIlość(pozycja).ToString() + "; ";
}
if (PozostałaIlość(pozycja) <= Quantity.Zero) continue;

Total t = (Total)result[pozycja.Towar];
if (t == null)
{
t = new Total(pozycja.Towar, smw);
result.Add(pozycja.Towar, t);
}
t.Add(pozycja);
}

}
}
}

if (Parametry.CechaTowaru != null)
{
ReportHeader.Title += "|Cecha: <STRONG>" + Parametry.CechaTowaru.Name + "</STRONG>|Data Dostawy: <STRONG>" + Parametry.DataDostawy + "</STRONG>";
ReportHeader.Title += "|Zestawienie wykonał(a): <STRONG>" + pars.Session.Login.OperatorName + " (" + Date.Today + " " + Time.Now + ")</STRONG>";
//Grid.GroupLine = "Wartość cechy " + Parametry.CechaTowaru.Name + ": {0}";
Grid.GroupLine = Parametry.CechaTowaru.Name + ": {0}";
//Grid.GroupLine = "Wartość cechy " + Parametry.WartoscCechyTowaru + ": /%";
}

if (Parametry.WartoscCechyTowaru != null)
{
ReportHeader.Title += "|"+Parametry.CechaTowaru.Name +": <STRONG>" + Parametry.WartoscCechyTowaru + "</STRONG>";
}

ArrayList lista = new ArrayList(result.Values);
lista.Sort();
Grid.DataSource = lista;

}