2012-04-09 13 views
2

so habe ich diese Anwendung, wo ich auf einer Abfrage ein einfaches Suchfenster zu schaffen haben basierend (diese Abfrage alle finanziellen Transaktionen für die angegebenen Suchkriterien erhält)Hinzufügen eines benutzerdefinierten berechnetes Feld für benutzerdefinierte Suchmasken in light

Also, was ich will, ist ein berechnetes Feld auf dem Bildschirm, die die Summe der Suchergebnisse zeigt. nicht die Summe aller Datensätze.

ich versuchte, ein berechnetes Feld auf der Finanztransaktion Tabelle hinzufügen, aber es macht keinen Sinn ..

was soll ich in dieser Art von Situationen zu tun?

danke im voraus.

Grüße,

Antwort

1

Ich gehe davon aus, dass Sie durch die Suche bedeuten, die Benutzer auf einem Suchbildschirm ihre Kriterien in dem Standard-Suchfeld eingeben. Denken Sie daran, dass es sich bei der integrierten Suche nicht um eine Suche in der Datenbank handelt, sondern um einen Filter für die Abfrage, die Sie bereits abgerufen haben. Wenn der Benutzer also etwas "durchsucht", filtert er tatsächlich Zeilen aus dem Bildschirm heraus, wobei die zugrunde liegende Datensammlung dennoch an das Raster gebunden ist.
Mir ist keine Möglichkeit bekannt, das integrierte Suchfeldverhalten abzufangen.

Eine Möglichkeit, das zu implementieren, was ich denke, ist, indem Sie eine Abfrage erstellen und diese nach den erforderlichen Suchkriterien parametrisieren und einen Suchbildschirm um sie herum erstellen. Sie können das Standardsuchfeld ausblenden, um es klarer zu machen.

Zum Beispiel sagen, dass ich eine Projekte Tabelle mit einem Stunden Feld habe. Zuerst erstelle ich eine Abfrage basierend auf Projekten, wo ich einen Filter wie "Name enthält NameParam" hinzufüge. Machen Sie diesen Parameter sichtbar auf dem Bildschirm (verwenden Sie diesen Artikel als Leitfaden: http://blogs.msdn.com/b/bethmassi/archive/2010/11/09/creating-a-custom-search-screen-in-visual-studio-lightswitch.aspx)
Jetzt werde ich einen Trick verwenden, das ist eine Technik, die ich gesehen habe, ich bin nicht 100% damit zufrieden, basiert auf der Tatsache ist, dass das Changed-Ereignis eines Textfelds, das an einen Abfrageparameter gebunden ist, bisher nach der Ausführung der Bildschirmabfrage erfolgt ist, aber für die aktuelle Version von LS funktioniert. Wählen Sie im Designer den Abfrageparameter (auf der linken Seite des Bildschirms) aus und fügen Sie den Code für das Ereignis "Changed" hinzu. In diesem Ereignishandler können Sie dann die gewünschten Felder berechnen. Zum Beispiel habe ich diese zwei Variablen (bereits als Datenelemente definiert):

RecordsCount = ProjectsByName.Count.ToString() 
TotalHours = ProjectsByName.Sum(Function(project) project.Hours) 

(VB-Code)
Jedes Mal, wenn Sie etwas auf dem Textfeld eingeben und drücken Sie die Eingabetaste oder Registerkarte aus, die Abfrage ausgeführt werden mit die neuen Kriterien, dann wird der Changed-Event-Handler ausgelöst und die Eigenschaften aktualisieren ihren Wert.
Etwas zu beachten ist, dass für diese Funktion sollten Sie Paging deaktivieren. Andernfalls berechnet es die Ergebnisse der aktuellen Seite.
Wenn Paging erforderlich wäre, könnten Sie immer eine zweite Abfrage ausführen, um die Gesamtergebnisse zu erhalten.

Verwandte Themen