Implementieren von Geschäftslogik und Datenüberprüfung in einer Windows Phone-App für SharePoint
Implementieren Sie die Datenvalidierung in einer Windows Phone-App, die mithilfe der Vorlage "Windows Phone - SharePoint-Listenanwendung" erstellt wurde.
Verwenden Sie in einer Windows Phone-app für die Produktionsumgebung vorgesehen ist, müssen Sie wahrscheinlich von Benutzern auf, Geschäftslogik für den bestimmten Umständen relevant erzwungen, um sicherzustellen, dass geeignete Formatierung der eingegebenen Werte oder einfach zum Abfangen von Fehlern vor dem Speichern von Werten in einer SharePoint-Liste eingegebene Daten zu überprüfen. Projekte, die basierend auf der Vorlage Windows Phone SharePoint List Application standardmäßig Daten Überprüfungslogik unter anderem solche Projekte auch einen Mechanismus für Entwickler zum Implementieren der benutzerdefinierten Datenüberprüfung bereitstellen.
Wichtig
Wenn Sie eine App für Windows Phone 8 entwickeln, müssen Sie Visual Studio Express 2012 anstelle von Visual Studio 2010 Express verwenden. Alle Informationen in diesem Artikel betrifft mit Ausnahme der Entwicklungsumgebung Erstellen von apps für Windows Phone 8 und Windows Phone 7. > Weitere Informationen finden Sie unter Vorgehensweise: Einrichten einer Umgebung zum Entwickeln mobiler Apps für SharePoint.
Standardmäßige Datenüberprüfungsregeln
Einige Datentypen für Felder in SharePoint-Listen sind standardmäßig einfache Formatierung oder Gültigkeitsprüfung zugeordnet. Wenn Sie eingeben eine ungültige URL für ein Feld basierend auf dem Feld Hyperlink oder Bild, geben Sie in einer SharePoint-Liste, und versuchen, die Änderungen zu speichern, eine Meldung angezeigt, die angibt, dass die eingegebene Adresse ungültig ist. Wenn Sie einen Kundennamen als einen Wert eingeben Feldtyp für ein Feld basierend auf Datum und Uhrzeit, eine Meldung leiten Sie ein Datum in einem gültigen Bereich für das Feld eingeben.
Hinweis
Die Überprüfung der Datumseingabe erfolgt unter Berücksichtigung des SharePoint-Datumsformats. Wenn das Datumsformat des Gebietsschemas des Smartphones erforderlich ist, passen Sie das Feld an und fügen Sie die entsprechenden Prüfungen hinzu.
Einige dieser grundlegende Validierungsregeln gelten auch standardmäßig in einer Windows Phone-app aus der Vorlage für Windows Phone SharePoint List Application erstellt. Wenn Sie in ein Feld, das an ein SharePoint-Feld des Typs Datum und Uhrzeit gebunden ist, im Bearbeitungsformular einer Windows Phone App basierend auf einer SharePoint-Liste etwas anderes als einen Datumswert eingeben, wird eine Validierungsfehlermeldung angezeigt, wenn der Fokus von dem Steuerelement wechselt, das TextBox
dem Feld zugeordnet ist. (Siehe Abbildung 1).
Abbildung 1: Hinweis auf Validierungsfehler in einer Windows Phone-App
Das Textfeld mit der Bezeichnung "Startzeit" im Formular bearbeiten ist an ein Feld Datum und Uhrzeit in der SharePoint-Liste gebunden, auf der dieser Beispiel-app basiert. Der in Abbildung 1 dargestellte Validierungsfehlerhinweis (in rotem Text) wird angezeigt, wenn ein ungültiges Datum in das Textfeld eingegeben wird (und das Textfeld anschließend den Fokus verliert), da die ValidatesOnNotifyDataErrors
-Eigenschaft des Objekts, das Binding
der Text
-Eigenschaft des TextBox
Steuerelements zugeordnet ist, in der XAML-Deklaration, die in TextBox
der Datei EditForm.xaml definiert ist, auf True
festgelegt ist.
<StackPanel Orientation="Vertical" Margin="0,5,0,5">
<TextBlock TextWrapping="Wrap"
HorizontalAlignment="Left"
Style="{StaticResource PhoneTextNormalStyle}">Start Time*
</TextBlock>
<TextBox Height="Auto"
Style="{StaticResource TextValidationTemplate}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Width="470"
HorizontalAlignment="Left"
Name="txtEventDate"
Text="{Binding [EventDate], Mode=TwoWay, ValidatesOnNotifyDataErrors=True,
NotifyOnValidationError=True}"
TextWrapping="Wrap" />
<TextBlock FontSize="16"
TextWrapping="Wrap"
HorizontalAlignment="Left"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding DateTimeFormat}" />
</StackPanel>
(Wenn die ValidatesOnNotifyDataErrors
-Eigenschaft auf False
festgelegt ist, hat der Benutzer keinen Hinweis darauf, dass die eingegebenen Daten ungültig sind, bis die Schaltfläche Speichern ausgewählt wird. An diesem Punkt wird dem Benutzer eine Fehlermeldung zu Validierungsfehlern angezeigt, da die Formatvalidierung bei eingegebenen Datumswerten weiterhin von der Basisklasse durchgeführt wird, von der die EditItemViewModel
Klasse abgeleitet wird.)
Jedoch einige Felder möglicherweise keine Benachrichtigungen für ungültige Daten in der Windows Phone-app bereit. Und ausgereiften Visual Studio-Projektvorlagen sind unbedingt allgemeiner (engl.), um als Ausgangspunkt für viele verschiedene Anwendungen verwendet werden. Die Vorlage Windows Phone SharePoint List Application kann nicht gehören das Validierungsregeln für bestimmte Kontexte und seinen Wert als allgemeine Vorlage noch beibehalten. Je nach Ihren Anforderungen und den Fällen, in denen Ihre bestimmten Windows Phone-app verwendet wird, werden Sie wahrscheinlich Ihre eigenen benutzerdefinierten Datenüberprüfung Regeln implementieren möchten.
Implementieren der benutzerdefinierten Datenüberprüfung Regeln
You can validate data entered by users of your Windows Phone app in several ways. A project created by using the Windows Phone SharePoint List Application template includes classes that serve as intermediaries between the forms (that is, the views) of the data in the Windows Phone app (for example, the EditForm.xaml file) and the data itself in the SharePoint list on which the app is based. Diese Klassen können als Implementierungen der ViewModel-Komponente des Model-View-ViewModel-Entwurfsmusters betrachtet werden (Abbildung 2). (For more information about how the Windows Phone SharePoint List Application template conforms to the MVVM software design pattern, see Architektur der Vorlage Windows Phone SharePoint-Liste-Anwendung.)
Hinweis
Die SharePoint-Listenvorlagen enthalten keine standardmäßigen Überprüfungen (wie z. B. den Prozentsatz des Abschlusses in einer SharePoint-Aufgabenliste, die vorherige Überprüfung in einer Team-Diskussionsliste und die SP-Dezimalfeld-Typenüberprüfung), aber Sie können solche Überprüfungen implementieren.
Abbildung 2: Vorlagendateien in der ViewModel-Komponente
In Anwendungen, die auf der Grundlage des MVVM-Musters entworfen wurden, wird die Datenüberprüfung häufig auf der Datenschicht (d. a. in der Modellkomponente) behandelt. In Projekten, die aus der Vorlage Windows Phone SharePoint-Listenanwendung erstellt wurden, wurde ein erweiterbarer Mechanismus für die Datenüberprüfung auf eine Ebene "gepusht" und in der ViewModel-Komponente implementiert, um Entwicklern die Verwaltung der Datenüberprüfung zu erleichtern. In Projekten, die auf der Vorlage basieren, ist daher der am besten geeignete Ort für benutzerdefinierten Code, der Benutzereingaben überprüft oder daten anderweitig verwaltet, in diesen ViewModel-Klassen. In Bezug auf die Datenüberprüfung bieten die EditItemViewModel
-Klasse und die NewItemViewModel
-Klasse (die den Formularen zugeordneten Klassen, die höchstwahrscheinlich das Bearbeiten und Aktualisieren von Listendaten umfassen) eine offene Implementierung einer Validierungsmethode (namens Validate()
), die die Basisvalidierungsmethode in der Klasse überschreibt, von der diese beiden Klassen abgeleitet werden.
public override void Validate(string fieldName, object value)
{
base.Validate(fieldName, value);
}
Diese Methode bieten eine komfortable Möglichkeit zum Hinzufügen von benutzerdefinierten Überprüfungslogik dieser Ziele einzelne Felder-Entwickler. Der allgemeine Ansatz besteht darin, den Wert des Arguments zu überprüfen, das fieldName
an die Validate()
-Methode übergeben wird, um das Feld zu identifizieren, das Sie Ihrem benutzerdefinierten Validierungscode zuordnen möchten. Sie können beispielsweise eine switch
-Anweisung in Ihrer Implementierung dieser Methode verwenden, um Validierungslogik für verschiedene Felder im Bearbeitungsformular (EditForm.xaml) Ihrer Windows-App anzugeben.
Im folgenden Codebeispiel wird davon ausgegangen Sie, dass eine Installation von SharePoint Server eine Produktbestellungen Liste aus der Vorlage benutzerdefinierte Liste erstellt wurde. Die Liste mit den Spalten und Feldtypen erstellt wurde in Tabelle 1 dargestellt.
Tabelle 1. Liste "Produktbestellungen"
Spalte | Typ | Erforderlich |
---|---|---|
Product (d. h. Titel) | Einzelne Textzeile (Text) | Ja |
Beschreibung | Einzelne Textzeile (Text) | Nein |
Anzahl | Zahl | Ja |
Order Date | Datum und Uhrzeit (DateTime) | Nein |
Fulfillment Date | Datum und Uhrzeit (DateTime) | Nein |
Contact Number | Einzelne Textzeile (Text) | Nein |
Erneut aus, für die in diesem Beispiel wird, wird davon ausgegangen Sie, dass die folgenden einfachen Validierungsregeln erzwungen werden soll, basierend auf der Geschäftslogik, die an das fiktive Unternehmen Contoso, Ltd. für ein bestimmtes Produkt Sortierung System eingesetzt werden:
- Auftragserfüllung Datumsangaben für Bestellungen müssen nach dem Datum sein, auf denen die Bestellung aufgegeben wurde.
- Wenn ein Kunde eine Bestellung für ein Produkt mit dem Namen Fuzzy Dice aufgeben möchte, müssen die Würfel paarweise sortiert werden. Nach den eigentümlichen Regeln bei Contoso, Ltd. gibt es einfach nicht so etwas wie einen Fuzzy Die.
- In der Liste "Produktbestellungen" lautet der Feldtyp für Telefonnummern "Einzelne Textzeile" (also Text), wobei es sich um einen beliebigen Text handeln kann (standardmäßig bis zu 255 Zeichen). Für dieses Beispiel wird eine Formatierungsüberprüfungsregel erzwungen, die erfordert, dass eingegebene Daten in einem der gängigen Telefonnummernformate vorliegen. Beispiel: "(555) 555-5555".
Zur Implementierung benutzerdefinierter Überprüfungsregeln
Wenn Sie eine SharePoint-Liste erstellt haben, die auf der Vorlage Benutzerdefinierte Liste basiert, die die in Tabelle 1 angegebenen Spalten und Typen enthält, erstellen Sie eine Windows Phone-App mithilfe der Vorlage Windows Phone SharePoint-Listenanwendung in Visual Studio, indem Sie die unter Vorgehensweise: Erstellen einer Windows Phone SharePoint-Listen-App beschriebenen Schritte ausführen.
Doppelklicken Sie in Projektmappen-Explorer im Ordner ViewModels für das Projekt auf die Datei EditItemViewModel.cs (oder wählen Sie die Datei aus, und drücken Sie F7), um die Datei zur Bearbeitung zu öffnen.
Fügen Sie der Liste der Direktiven am Anfang der Datei die folgenden
using
Direktiven hinzu.using System.Globalization; using System.Text.RegularExpressions;
Ersetzen Sie die Standardimplementierung der
Validate()
-Methode in der Datei durch den folgenden Code.public override void Validate(string fieldName, object value) { string fieldValue = value.ToString(); if (!string.IsNullOrEmpty(fieldValue)) //Allowing for blank fields. { bool isProperValue = false; switch (fieldName) { case "Quantity": // Enforce ordering Fuzzy Dice in pairs only. int quantityOrdered; isProperValue = Int32.TryParse(fieldValue, out quantityOrdered); if (isProperValue) { if ((quantityOrdered % 2) != 0) // Odd number of product items ordered. { if ((string)this["Title"] == "Fuzzy Dice") { AddError("Item[Quantity]", "Fuzzy Dice must be ordered in pairs. No such thing as a Fuzzy Die!"); } else { // Restriction on ordering in pairs doesn't apply to other products. RemoveAllErrors("Item[Quantity]"); } } else { RemoveAllErrors("Item[Quantity]"); } } break; case "Fulfillment_x0020_Date": // Determine whether fulfillment date is later than order date. DateTime fulfillmentDate; isProperValue = DateTime.TryParse(fieldValue, CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal, out fulfillmentDate); if (isProperValue) { DateTime orderDate; isProperValue = DateTime.TryParse((string)this["Order_x0020_Date"], CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal, out orderDate); if (fulfillmentDate.CompareTo(orderDate) > 0) { RemoveAllErrors("Item[Fulfillment_x0020_Date]"); } else { AddError("Item[Fulfillment_x0020_Date]", "Fulfillment Date must be later than Order Date."); } } break; case "Contact_x0020_Number": // Check that contact number is in an appropriate format. Regex rx = new Regex(@"^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$"); if (rx.IsMatch(fieldValue)) { RemoveAllErrors("Item[Contact_x0020_Number]"); } else { //Specified Contact Number is not a valid phone number. AddError("Item[Contact_x0020_Number]", "Specified Contact Number is invalid."); } break; default: // Not adding custom validation for other fields. break; } } //And then proceed with default validation from base class. base.Validate(fieldName, value); }
Denken Sie daran, die in diesem Codebeispiel wird die Feldnamen angegeben basieren auf Eigenschaften der in Tabelle 1 angegebenen Beispiel Produktbestellungen Liste. (Beachten Sie, dass im XML-Schema für Listenfelder in SharePoint Server Leerzeichen in den Namen von Feldern durch die Zeichenfolge "x0020" für das Name-Attribut des Field-Elements ersetzt werden, das ein bestimmtes Feld definiert. Die Vorlage verwendet das Name-Attribut für ein Field-Element , wie es im XML-Schema auf dem Server definiert ist, nicht das DisplayName-Attribut .) Sie können die Feldnamen der Felder identifizieren, für die Sie Validierungslogik implementieren möchten, indem Sie sich die Binding-Deklarationen der Texteigenschaften für die in EditForm.xaml definierten TextBox-Objekte ansehen oder die ViewFields-Zeichenfolge der CamlQueryBuilder-Klasse in der Datei ListProvider.cs untersuchen.
Speichern Sie die Datei.
Code für die benutzerdefinierte Gültigkeitsprüfung in diesem Beispiel wird nur ausgeführt, wenn das value -Argument an die Validate -Methode übergeben, nicht null oder eine leere Zeichenfolge ist. Wie in Tabelle 1 dargestellt, die Felder Auftragserfüllung Datum und die Telefonnummer ist nicht erforderlich, Daten enthalten (wie die Liste für die Zwecke dieses Beispiels im SharePoint Server definiert ist), sodass wir diese Felder leer zulassen möchten. Eine einfache Überprüfung, ob das Argument value null ist ist nicht ausreichend, da der übergebene Wert kann eine Zeichenfolge der Länge Null (die auf einen Nullwert gleichsetzen nicht) sein, und für dieses Beispiel möchten wir nicht leere Zeichenfolgen für Felder ungültig, die leer sein können. Der Überprüfungslogik für die Auftragserfüllung Datum und Menge Felder enthält zusätzliche Überprüfungen der Werte übergeben, um sicherzustellen, dass sie den entsprechenden Typ aufweisen. Wenn bei der ersten Überprüfung hier (vor der switch-Anweisung ) nur bestätigt wurde, dass der übergebene Wert nicht NULL ist (anstatt gegen die engere Bedingung zu überprüfen, dass es sich um eine leere Zeichenfolge handelt), würden diese Überprüfungen immer noch nicht ausgeführt, wenn der Wert eine leere Zeichenfolge wäre, aber die Logik zum Überprüfen von Daten für das Feld Kontaktnummerwürde weiterhin ausgeführt, wenn der übergebene Wert eine leere Zeichenfolge wäre. Und in diesem Beispiel wir für das Feld Telefonnummer werden leer (eine leere Zeichenfolge) zulassen möchten, insbesondere dann, wenn ein Benutzer startet Bearbeitung eines Listenelements durch Öffnen des Formulars bearbeiten.
Wenn Sie das Projekt erstellen und in Windows Phone Emulator bereitstellen, um es auszuführen, können Sie Ihre Validierungslogik testen, indem Sie Daten, die gegen Ihre Geschäftsregeln verstoßen, in die Felder der Liste im Bearbeitungsformular der App eingeben. (Siehe Abbildung 3.)
Abbildung 3: Benutzerdefinierte Hinweise auf Validierungsfehler
Der Code in diesem Beispiel erzwingt wenn er in der EditItemViewModel.cs-Datei nur enthalten ist diese Überprüfungsregeln für ausschließlich auf dem Formular Bearbeiten von Benutzern eingegebenen Daten. Wenn Sie die Validierungsregeln sowohl beim Hinzufügen neuer Elemente als auch beim Bearbeiten von Benutzern erzwingen möchten, müssen Sie dieselbe Validierungslogik in die Methode in der Validate()
Datei NewItemViewModel.cs einschließen (oder vorzugsweise eine separate Klassendatei mit einer Funktion erstellen, die diese Validierungslogik enthält, und dieselbe Funktion aus den Validate()
Methoden sowohl in der Datei EditItemViewModel.cs als auch in der Datei NewItemViewModel.cs aufrufen).
The validation logic in this sample enforces given business rules by indicating to the user that entered data is not in a format permitted by the rules, but the entered data is not intercepted and changed by this code. To intercept and, for example, format phone numbers in a consistent way before saving the data to the SharePoint list, you can implement custom data conversion for entered phone numbers. Eine Erläuterung der benutzerdefinierten Datenkonvertierung für Listenelementfelder finden Sie unter Vorgehensweise: Unterstützen und Konvertieren von SharePoint-Feldtypen für Windows Phone-Apps.
Siehe auch
- Erstellen von Windows Phone-Apps, die auf SharePoint zugreifen
- Binden von Silverlight-Daten
- Vorgehensweise: Einrichten einer Umgebung für die Entwicklung von mobilen Anwendungen für SharePoint
- Windows Phone SDK 8.0
- Microsoft SharePoint SDK für Windows Phone 8
- Windows Phone SDK 7.1
- Microsoft SharePoint SDK for Windows Phone 7.1