Laden...

[erledigt] Ultragrid eintrag markieren? Infragistics UltraGrid read-only?

Letzter Beitrag vor 15 Jahren 9 Posts 4.164 Views
[erledigt] Ultragrid eintrag markieren? Infragistics UltraGrid read-only?

Guten Tag!

Nachdem ich jetzt nach allem möglichen gegoogelt hab, aber für mich nichts relevantes gefunden habe bzw. die Infragistics Hilfe mich auch nicht weiter gebracht habe wende ich mich an die Pros von euch 😉.

Also meine Frage ist, wie bekomme ich das UltraGrid Read-Only, sodass ich den Filter noch verwenden kann.

Bisher habe ich es immer mit

e.Cancel

im BeforeEnterEdit Event gemacht, da da aber alle Einträge inkl. Filter read-only werden ist das nicht so optimal.

Was könnt ihr mit empfehlen, wie ich das am besten löse? Meine Erfahrungen mit Infragistics begrenzen sich bisher auf ein Minimum...

auch mit

ugParts.Rows[0].Cells[0].Activation = Activation.Disabled;

blieb der gewünschte Erfolg aus und der Eintrag lässt sich weiterhin fröhlich editieren...

Hallo Platzi88,

Du kannst ja im BeforeEnterEdit abfragen, ob du in einer Filter-Zeile bist.
Wenn dem nicht so ist, setze e.Cancel auf true - andernfalls bleibt es false und du kannst die Filter-Zeilen auch weiterhin benutzen.

//edit: Du kannst im BeforeEnterEdit auf folgende Weise abfragen ob die aktuelle Zeile eine FilterRow ist:


            if (! grid1.ActiveRow.IsFilterRow)
            {
                e.Cancel = true;
            }

grid1 ist der Name des UltraGrids

Liebe Grüße
Preli

[- www.saftware.net -](http://www.saftware.net/)

Anscheinend war ich wieder einmal zu voreilig, mittlerweile funktioniert das read-only "schalten" mit:

 foreach (UltraGridRow ugrow in ugParts.Rows)
            {
                ugrow.Activation = Activation.NoEdit;
                
            }

im InitializeRow Event.

Aber da stellt sich für mich schon die nächste Frage, und zwar werden die mehr oder weniger "Unterzielen" nicht read-only geschalten. Zum besseren Verständnis siehe angehängtes Bild.

Wie kann man auf diese zeilen zugreifen?!?

Hallo Platzi88,

Du kannst ja im BeforeEnterEdit abfragen, ob du in einer Filter-Zeile bist.
Wenn dem nicht so ist, setze e.Cancel auf true - andernfalls bleibt es false und du kannst die Filter-Zeilen auch weiterhin benutzen.

//edit: Du kannst im BeforeEnterEdit auf folgende Weise abfragen ob die aktuelle Zeile eine FilterRow ist:

  
            if (! grid1.ActiveRow.IsFilterRow)  
            {  
                e.Cancel = true;  
            }  
  

grid1 ist der Name des UltraGrids

Liebe Grüße
Preli

Natürlich, das is der wesentlich einfachere weg... 😉

danke danke hat funktioniert

Hallo,

Nur der Vollständigkeit halber, damit du in Zukunft weißt wie man auf ALLE Rows zugreifen kann:

mit

foreach (UltraGridRow ugrow in ugParts.Rows)

bekommst du nur alle Zeilen des äußersten "Bands"

Um wirklich alle Rows durchzulaufen bräuchtest du ein Konstrukt wie folgt:


foreach(UltraGridBand band in ugParts.DisplayLayout.Bands)
{
  foreach(UltraGridRow row in band.Rows)
  {
    // ...
  }
}

PS: Hoffe da sind jetzt keine Fehler drinnen, hab das nur so schnell aus dem Gedächtnis aufgeschrieben

Liebe Grüße
Preli

[- www.saftware.net -](http://www.saftware.net/)

Setzt doch einfach die CellClickAction für das ganze Grid auf "RowSelect" dann geht er nicht mehr in den Edit Mode....

So hab ich das immer gemacht.

Findest du unter DisplayLayout > Override > CellClickAction

Da ich nicht noch einen eigenen Fred aufmachen wollte hab ich mich einfach hier dazugehängt.. 8)

und zwar, wie markiert man am besten den letzen eintrag im Ultragrid per coding?

Wenn ich einen neuen eintrag schreibe wird immer das ganze neu geladen und die erste Zeile ist markiert, da sollte aber die letzte Zeile markiert sein, da neue Einträge logischerweis am Ende angezeigt werden...

Ich hoffe ich hab mich deutlich genug ausgedrückt 😉

und zwar, wie markiert man am besten den letzen eintrag im Ultragrid per coding?

Durch setzen der ActiveRow Property des Grids

Die letzte Zeile müsste dann wie folgt markiert werden (habs nicht ausprobiert, sollte aber klappen)

grid1.ActiveRow = grid1.Rows[grid1.Rows.Count-1];

Liebe Grüße
Preli

[- www.saftware.net -](http://www.saftware.net/)

Vielen dank, da ich im nachhinein drauf gekommen bin das es auch möglich ist, das der User vor dem hinzufügen einen Filter aktiviert bzw. die Sortierung ändern kann wird der neue Eintrag nicht immer an der letzten Stelle eingefügt...

Ich habe das Problem dadurch gelöst:

 foreach (UltraGridRow ugrow in ugParts.Rows)
                    foreach (UltraGridCell ugcell in ugrow.Cells)
                        if (ugcell.Text == dlg.strpartNumber)
                        {
                            ugrow.Selected = true;
                            ugParts.ActiveRow = ugrow;
                        }