Υπάρχουν πολλά καλά παραδείγματα του ενημέρωση προσαρμοσμένες λίστες μέσω το SDK. Εδώ είναι ακόμα μια.
Προβλήματος των επιχειρήσεων: Φόρμα InfoPath έχει σχεδιαστεί ότι επιτρέπει στους χρήστες να εισέλθουν σε απευθείας σύνδεση αγοράσει επιτάξεις. PO αναπλήρωσης αριθμοί πρέπει να είναι παραδοσιακό ακολουθία με βάση ακέραιες τιμές και υπολογίζεται αυτόματα.
Επιχειρηματική λύση: Δημιουργήσετε μια προσαρμοσμένη λίστα ΒΡΎΑ που περιέχει δύο στήλες: "ControlField" και "ControlValue". Η στήλη αξία περιέχει τον επόμενο αριθμό αναπλήρωσης αγορά. Σημειώστε ότι το γενικό "ελέγχου" ονομάζοντας σύμβαση προβλέπει μελλοντικές ελέγχου πεδία που μπορούν να χρησιμοποιηθούν, ανάλογα με τις ανάγκες.
Τεχνική λύση: Δημιουργήσετε μια διαδικτυακή υπηρεσία που προσεγγίζεται από τον πελάτη του InfoPath. Η υπηρεσία web που επιστρέφει πίσω τον επόμενο αριθμό αναπλήρωσης αγορά και ενημερώνει την τιμή της λίστας.
Διδάγματα:
- Κατά την προσθήκη αυτής της υπηρεσίας web ως αρχείο προέλευσης δεδομένων στη φόρμα του InfoPath, Θεώρησε αναγκαίο να μετατρέψει σε μια udc και να το αποθηκεύσετε σε μια βιβλιοθήκη σύνδεσης δεδομένων.
- Βρήκα επίσης απαραίτητα, ώστε μεταξύ τομέων scripting μέσω κεντρικών υπηρεσιών διοίκησης // διαχείριση εφαρμογών // ρύθμιση παραμέτρων του διακομιστή μορφή.
- Πρώτη φορά τη μορφή προσπάθησε να αποκτήσετε πρόσβαση στην υπηρεσία web, παίρνει λίγο και περιστασιακά, θα ώρα έξω. Έχω ανακατευτήκατε με τις ρυθμίσεις σε μορφή διαμόρφωση διακομιστή για να αναπτύξετε τις ρυθμίσεις χρονικού ορίου και αυτό φάνηκε να βοηθήσει.
Ο κώδικας:
χρήση Σύστημα;
χρήση System.Web;
χρήση System.Web.Services;
χρήση System.Web.Services.Protocols;
χρήση Microsoft.SharePoint;
χρήση System.Configuration;
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
δημόσια Κατηγορία PoService : System.Web.Services.WebService
{
δημόσια PoService () {
//Αποσχολιάστε την ακόλουθη γραμμή, αν χρησιμοποιείτε σχεδιασμένα συστατικά
//InitializeComponent();
}
/// <Περίληψη>
/// Επιδιώξω τον επόμενο αριθμό PO po αριθμός ελέγχου λίστα sharepoint.
/// Προσαύξηση τον αριθμό PO στον εν λόγω κατάλογο.
/// </Περίληψη>
/// <επιστρέφει></επιστρέφει>
[WebMethod]
δημόσια συμβολοσειρά GetNextPoNumber()
{
συμβολοσειρά SpPoControlSiteName; // Όνομα της πραγματικής τοποθεσίας ΒΡΎΑ που φιλοξενεί τη λίστα ελέγχου PO.
συμβολοσειρά SpPoControlListName; // Όνομα της πραγματικής ΒΡΎΑ λίστας που περιέχει το στοιχείο ελέγχου ανά.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
συμβολοσειρά nextPoReqNumber = "xyzzy";
χρήση (SPSite ιστοσελίδα = νέα SPSite(SpPoControlSiteName))
{
χρήση (SPWeb Web = site. Επιθετικό())
{
SPList currentList = web. Λίστες[SpPoControlListName];
foreach (SPItem controlItem σε currentList.Items)
{
Αν (((συμβολοσειρά)controlItem["ControlField"]).Ισούται με("NextPoNumber"))
{
nextPoReqNumber = (συμβολοσειρά)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Μετατροπή.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Εντόπιση, ανάγνωση και ενημέρωση ο αριθμός Εντολής αγοράς στη λίστα.
} // χρησιμοποιώντας spweb web = site.openweb()
} // χρησιμοποιώντας την ιστοσελίδα spsite = νέα spsite("http://localhost/τελευταίες")
επιστροφή nextPoReqNumber;
}
}