Αρχεία κατηγοριών: jQuery και SharePoint

Ξεπεραστούν ενοχλητικό πρόβλημα με συγγενής Urls στο SharePoint γρήγορη εκκίνηση

Θα ήθελα να προσθέσω μια σύνδεση στη ναυσιπλοΐα γρήγορης εκκίνησης τις προάλλες και μου είπε SharePoint:

image

Καθαρό κείμενο έκδοση του που είναι:

Εξασφαλίσει ότι η διεύθυνση URL είναι έγκυρη και αρχίζει με είτε έγκυρος χαρακτήρας (ένα αριθμητικό σύμβολο (#) ή κάθετο (/)) ή μια έγκυρη Υποστηριγμένο πρωτόκολλο (για παράδειγμα, «http://’, «https://’, «αρχείο://’, «ftp://’, «mailto:’, «Ειδήσεις:’).

"Blech και ευλογιά!"Είπα.

Μια λύση για αυτό είναι η χρήση JavaScript για να βρείτε μια γνωστή η αεροπορική σύνδεση στην γρήγορη έναρξη και να παρακάμψετε τη συμπεριφορά.

Για να ελέγξετε αυτό, προσθέσετε ένα νέο σύνδεσμο στο δικτυακό σας τόπο δοκιμής, thusly:

image

Χρησιμοποίησα jQuery. Να το λύσουμε, πάρετε κάποια JavaScript και jQuery στη σελίδα χρησιμοποιώντας την τεχνική σας αγαπημένο και με μια γραμμή κώδικα όπως αυτό:

 

$(έγγραφο).έτοιμο( συνάρτηση () {

    $("ένα:περιέχει(«Δοκιμή URL αντικατάσταση»)").Κάντε κλικ στο κουμπί(συνάρτηση () { συναγερμού("αλλάξει κλικ συμπεριφορά!"); επιστροφή ψευδές;});

});

Και σας θείος του Bob.

Ο επιλογέας jQuery βρίσκει κάθε <ένα> ετικέτα που έχει «Αντικατάστασης δοκιμή URL» στο όνομά του. Μπορεί να θέλετε να βρείτε-μελωδία που ανάλογα με το σας σύνδεσμο και τέτοια.

Το .click(συνάρτηση() παρακάμπτει ό, τι του SharePoint θα είχε κάνει όταν ο χρήστης κάνει κλικ. Βεβαιωθείτε ότι σας "επιστρέψει false" ή αλλιώς θα κάνουμε πράγματα σας και προσπαθήστε να το href πράγμα πάρα πολύ, που είναι σχεδόν σίγουρα δεν είναι στόχος σας.

Αυτό έγινε και δοκιμής σε περιβάλλον SharePoint online, αλλά θα πρέπει να λειτουργούν καλά σε 2010 και νωρίτερα πάρα πολύ.

</Τέλος>

undefinedΕγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Γρήγορη και απλή: Επίλυση "μη έγκυρη διεύθυνση URL παράμετρος” πρόβλημα με UpdateListItems στο lists.asmx

Όταν εργάζεστε με UpdateListItems μέσω lists.asmx, είναι εύκολο να δημιουργήσει το σφάλμα:

Παράμετρος μη έγκυρη διεύθυνση URL.

Το παρεχόμενο URL περιέχει μια μη έγκυρη εντολή ή τιμή. Παρακαλώ ελέγξτε το URL και πάλι.

Μπορείτε να πάρετε αυτό το σφάλμα όταν ξεχάσετε να συμπεριλάβετε το αναγνωριστικό στον τα τη λίστα των πεδίων για να ενημερώσετε.  Αυτό, σαν πολλή SP αυτών των υπηρεσιών web, είναι λίγο αντιφατικό, δεδομένου ότι θα πρέπει να συμπεριλάβετε το αναγνωριστικό στο χαρακτηριστικό ID της το <Μέθοδος> στοιχείο.  Και δεν είστε ενημέρωση ID και πιθανώς ποτέ δεν θέλουν να στην πρώτη θέση.

Το SOAP envelope λειτουργεί:

<soapenv:Φάκελος xmlns:soapenv =«http://schemas.xmlsoap.org/SOAP/Envelope/»>
  <soapenv:Οργανισμός>                      
    <UpdateListItems xmlns =«http://schemas.Microsoft.com/SharePoint/SOAP/»>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <ενημερώσεις>                     
         <Παρτίδα OnError ="Να συνεχίσει">
          <Μέθοδος ID ="1" CMD ="Ενημέρωση">
            <Πεδίο Όνομα ="CooperativeLock">κλειδωμένη!</Πεδίο>
            <Πεδίο Όνομα ="ΑΝΑΓΝΩΡΙΣΤΙΚΌ">1</Πεδίο>
          </Μέθοδος>
        </Μαζική>                     
        </ενημερώσεις>                
      </UpdateListItems>             
  </soapenv:Οργανισμός>         
</soapenv:Φάκελος>

Εάν μπορείτε να στερήσετε από την αναφορά του πεδίου ID τότε θα πάρετε το ενοχλητικό μήνυμα "Παράμετρος μη έγκυρο URL".

</Τέλος>

undefinedΕγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

 

Φτωχός προσωρινή αποθήκευση σε JavaScript

[TL;DR έκδοση: χρησιμοποιεί cookies για την αποθήκευση των αποτελεσμάτων των async κλήσεις; καθιστούν τα αποτελέσματα του παρελθόντος async κλήσεις αμέσως και στη συνέχεια επικύρωση τους μετά από τη σελίδα του φορτίου.]

Έχω εργαστεί στην τοποθεσία intranet του SharePoint για έναν πελάτη που χαρακτηρίζει, μεταξύ άλλων, μια στυλιζαρισμένη δευτερεύουσα πλοήγηση για διαχείριση των οποίων επιλογές μενού μέσω μια τακτική παλιό προσαρμοσμένη λίστα.  Η ιδέα είναι ότι ο πελάτης παίρνει για τον έλεγχο της ιστοσελίδας "τους" μενού χωρίς να επηρεάσει ή να επηρεαστεί από την παγκόσμιας πλοήγησης που τίθεται από αυτό.

(υπάρχει κάτι απίστευτα ανατρεπτική σχετικά με την προσθήκη ενός CEWP που οδηγεί σε ένα αρχείο HTML που φορτώνει κάποια CSS και JS να μεταβάλλουν ριζικά σχεδόν τα πάντα σχετικά με τη συμπεριφορά ενός ιστοτόπου..., αλλά αυτό είναι για άλλη θέση)

Τον κώδικα για αυτό το πολύ απλό:

  • Περιμένετε για την σελίδα για να τελειώσει τη φόρτωση και να κάνει μια async κλήσης να φορτώσει επάνω μενού στοιχεία από μια λίστα που χρησιμοποιεί το υπόλοιπο ή lists.asmx ή οτιδήποτε άλλο
  • Χρησιμοποιώντας jQuery, συμπλήρωση δυναμικά μια δέσμη, αν <Li>του μέσα σε ένα γονέα <UL> (Δείτε το άρθρο του Christian Pinder εδώ για μια απλοϊκή εξήγηση για αυτό το tecnnique)
  • Χρήση CSS για να κάνει όλη τη μορφοποίηση
  • Κέρδος!

Το ευαίσθητο σημείο εδώ είναι ότι κάθε φορά που κάποιος χτυπά μια από τις σελίδες του site, πρόγραμμα περιήγησης web του χρήστη που είναι το άνοιγμα να πάρει τα στοιχεία από τη λίστα.  Μόλις dev είναι πλήρης και δοκιμών έχει αποδειχθεί τα πράγματα να είναι σταθερή και πλήρης, η παρούσα πρόσκληση αποτελεί περιττή περισσότερο από 99% του χρόνου δεδομένου ότι ο κατάλογος αλλάζει σπάνια.  Έχει επίσης ένα παράξενο επηρεάσει UI, η οποία είναι κοινή σε αυτό γενναίο νέο κόσμο της υπερ-ajaxy τοποθεσίες web-σελίδα καθιστά και μόνο τότε το μενού καθιστούν.  Είναι φοβισμένος και αποσπούν την προσοχή κατά τη γνώμη μου.  Και εκνευρισμού. Έτσι, προσωρινή αποθήκευση. 

Άλλαξα τη λογική thusly:

  • Αναζητήστε ένα cookie στο πρόγραμμα περιήγησης που περιέχει το μενού όπως διάβασα τελευταία
    • Αν βρεθεί, καταστήσει αμέσως.  Μην περιμένετε για την σελίδα να τελειώσουν.  (Θα πρέπει να βεβαιωθείτε ότι σας HTML είναι στρατηγικά τοποθετημένα εδώ, αλλά δεν είναι δύσκολο να κάνει).
  • Περιμένετε για την σελίδα για να τελειώσει τη φόρτωση και να κάνει μια async κλήσης να φορτώσει επάνω μενού στοιχεία από μια λίστα που χρησιμοποιεί το υπόλοιπο ή lists.asmx ή οτιδήποτε άλλο
  • Συγκρίνετε αυτό που πήρα από το cookie
    • Αν ταιριάζει, Σταμάτα
    • Διαφορετικά, χρησιμοποιώντας jQuery, συμπλήρωση δυναμικά μια δέσμη, αν <Li>του σε ένα <UL>
  • Χρήση CSS για να κάνει όλη τη μορφοποίηση
  • Κέρδος!

Κάποιοι από εσάς θα πω, "Γεια σου! δεν υπάρχει καμία πραγματική εναποθηκεύοντας συνεχίζεται εδώ δεδομένου ότι διαβάζετε το μενού ούτως ή άλλως κάθε ενιαίος χρόνος.”  Και έχεις δίκιο-δεν είμαι δίνοντας το διακομιστή κάθε είδους διάλειμμα.  Αλλά επειδή η κλήση είναι ασύγχρονες και θα συμβεί μετά την αρχική σελίδα HTML ωφέλιμο φορτίο καθιστά πλήρως, "αισθάνεται" ανταποκρίνεται περισσότερο στο χρήστη.  Το μενού καθιστά αρκετά όσο εφιστά την σελίδα.  Αν το μενού που συμβαίνει στην αλλαγή, ο χρήστης υπόκειται σε μια εκνευρισμού εκ νέου κατάρτιση του μενού, αλλά μόνο μια στιγμή.

Υπάρχουν μερικοί τρόποι για να κάνει caching αυτό πιο αποτελεσματική και να βοηθήσει στο διακομιστή, την ίδια στιγμή:

  • Βάλτε σε έναν κανόνα ότι το cache"cookie" είναι έγκυρο για τουλάχιστον 24 ώρες ή κάποια άλλη προθεσμία. Όσο υπάρχει κανενός cookie που έληξε, Χρησιμοποιήστε το cookie του μενού στιγμιότυπο και ποτέ δεν χτύπησε το server.

Καλά..., που είναι όλα που έρχονται στο μυαλό αυτή τη στιγμή :). 

Αν κάποιος έχει οποιαδήποτε έξυπνες ιδέες εδώ, θα ήθελα πολύ να δοκοῦσί σοι ἐπίστασθαι.

Και τέλος-αυτή η τεχνική μπορεί να χρησιμοποιηθεί για άλλα πράγματα.  Σελίδα αυτή του πελάτη έχει μια σειρά από πράγματα που βασίζονται σε δεδομένα σε διάφορες σελίδες, Πολλοί από αυτούς αλλαγή σχετικά σπάνια (όπως μία φορά την εβδομάδα ή μία φορά το μήνα).  Αν στοχεύετε σε συγκεκριμένες περιοχές της λειτουργικότητας, Μπορείτε να δώσετε ένα πιο απαντητικό UI για το τράβηγμα περιεχόμενο από το κατάστημα τοπικά cookie και καθιστώντας αμέσως.  Αισθάνεται πιο γρήγορα στο χρήστη, ακόμη και αν δεν σώζετε το διακομιστή κάθε κύκλους.  Σας μπορεί να εκτός από τους κύκλους του διακομιστή αποφασίζοντας σχετικά με ορισμένες προϋποθέσεις και εναύσματα να ακυρώνει την cache αυτή τοπικό cookie.  Που είναι όλα της κατάστασης και artsy πράγματα και πραγματικά το πιο διασκεδαστικό :). 

</Τέλος>

undefinedΕγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

XSLT και jQuery δείγματα

Έχω κάνει πολλή XSLT και jQuery και σκέφτηκα ότι θα μοιραστώ ορισμένα αποσπάσματα που άλλοι μπορεί να φανούν χρήσιμες στο μέλλον.

Παράδειγμα 1: Εκπέμπουν απλό JavaScript / jQuery σε XSLT:

<XSL:πρότυπο αγώνα = "κάτι" XML:χώρος = «διατηρήσουν»>

  <!– Κενό έξω το ερώτημα φιλικό να φιλτράρει κρυφό πεδίο –>
  <σενάριο τύπο = "text/javascript">
    $(έγγραφο).έτοιμο(συνάρτηση(){
      $("#QueryFriendlyFilters").Val(«κενό»);
    });
  </σενάριο>

</XSL:πρότυπο>

Εκείνο το κομμάτι εκπέμπει τα κάποια JavaScript που περιμένει τη σελίδα για να τελειώσει τη φόρτωση (λόγω της την $(έγγραφο).έτοιμο(…)) και στη συνέχεια σύνολα η τιμή του ένα κρυφό πεδίο που ονομάζεται QueryFriendlyFilters να η τιμή literal "Αδειασμα".

Παράδειγμα 2: Χρήση <XSL:Αν> να ελέγξετε "μεγαλύτερο από",  "λιγότερο από", κλπ.

<XSL:πρότυπο αγώνα = "κάτι" XML:χώρος = «διατηρήσουν»>

  <div id = "fdcAllFilters">
 
    <XSL:Αν test="@Count>0">
      <span class = "fdcFilterLabel">Τρέχοντα φίλτρα:</span>
    </XSL:Αν>

    <!– περισσότερα πράγματα που συμβαίνουν εδώ. –>

</XSL:πρότυπο>

Το παραπάνω απόσπασμα ελέγχει αν ένα χαρακτηριστικό που ονομάζεται "Μετράνε" του στοιχείου "κάτι" είναι μεγαλύτερη του μηδενός.  Το XML πίσω από αυτό θα ήταν κάτι σαν:”

<κάτι Count = "5" />

Παράδειγμα 3: Επαναλαμβάνεται σε όλα τα στοιχεία, Interspersing jQuery κλήσεις.

<!– Επαναλαμβάνεται σε όλα τα φίλτρα και να εμφανίζει τη σωστή  συνδέσεις. –>
<XSL:για κάθε επιλογή = "UserFilter">

  <μια κατηγορία = "FilterHref" href = "javascript:mySubmitPage(«RemoveUserFilter»,'{@ID}’)">[X]</ένα>

  <span class = "fdcFilterLabel"><XSL:αξία του select="@FilterValue"/></span>

  <σενάριο τύπο = "text/javascript">

    $(έγγραφο).έτοιμο(συνάρτηση(){
        <XSL:κείμενο><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:κείμενο>\"<XSL:αξία του select="@FilterValue"/>\"<XSL:κείμενο><![CDATA["));]]></XSL:κείμενο>
    });

  </σενάριο>

</XSL:για-κάθε>

Το παραπάνω απόσπασμα είναι το πιο περίπλοκο και μπορεί να υπάρξει ευκολότερους τρόπους για να το κάνουμε.

Το XML πίσω από αυτό μοιάζει περίπου με αυτό:

<UserFilter ID = "123" FilterValue = "xyzzy" />

Αυτό το απόσπασμα διαδοχικές προσεγγίσεις μέσα σε <UserFilter> κόμβους. 

Πρώτα εκπέμπει μια άγκυρα ετικέτα που όταν πατηθεί εκτελεί μια λειτουργία JavaScript που είναι ήδη στη σελίδα, "mySubmitPage" και μεταβιβάζει την τιμή ενός χαρακτηριστικού το <UserFilter> κόμβος που ονομάζεται "Αναγνωριστικό". 

Στη συνέχεια, εκπέμπει κάποια jQuery που περιμένει την σελίδα να φορτώσει.  JQuery ότι ενημερώνει ένα κρυφό πεδίο που ονομάζεται "QueryFriendlyFilters" προσθέτοντας την τιμή του χαρακτηριστικού FilterValue.  Σημείωση όλα την τρελή <XSL:κείμενο> και <![CDATA[ … ]]> πράγματα.

Αυτό είναι, ελπίδα αυτό βοηθά!

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Lists.asmx, GetListItems και φάκελοι

Έκανα κάποια έρευνα για κάποιον σήμερα γύρω από την υπηρεσία web list.asmx παρέχεται ως μέρος του SharePoint 2010 (και παλιότερες).  Ήταν σε θέση να πάρετε τα στοιχεία λίστας στο φάκελο ρίζας (καθώς και τα ονόματα των υποφακέλων), αλλά δεν ήταν δυνατή η λήψη στοιχείων σε υποφακέλους.  Έκανα κάποια ρίχνοντας μια ματιά για το Ίντερνετ και είναι μια εκπληκτικά κοινή ερώτηση.  Ακόμη, Θα μπορούσα να πάρετε μια καλή απάντηση στο απλό ερώτημα, "αν γνωρίζω το φάκελο, Πώς μπορώ να πάρω τα στοιχεία στο φάκελο?”  Για να είμαι ειλικρινής, Εγώ δεν προσπαθώ τόσο σκληρά, δεδομένου ότι έχω ήθελε να το καταλάβουμε αυτό μία έξω από μόνος μου για μια στιγμή Χαμόγελο.

Να ορίσετε το χρόνο αυτό, Δημιούργησα μια τοποθεσία που ονομάζεται «Blogging σενάρια» και μια προσαρμοσμένη λίστα όνομα "Προσαρμοσμένη λίστα με υπο-φάκελλοι".  Δημιούργησα στη συνέχεια φακέλους με το όνομα:

  • Έτος 2005
  • Έτος 2006
  • Έτος 2007

Πρόσθεσα μερικά στοιχεία στο φάκελο «Έτους 2006».  Αυτό είναι τι μοιάζει:

image

Ο φίλος μου δεν είναι σύνταξη κώδικα C# αλλά μάλλον χρήση της Java, έτσι το φάκελο SOAP ήταν ό, τι είναι πραγματικά αναγκαία.  Για να το επιτύχουμε, Μου έγραψε λίγο jQuery και στη συνέχεια χρησιμοποιείται fiddler για να λάβετε την πραγματική συνομιλία HTTP.

Εδώ είναι το σχετικό jQuery (Αντέγραψα κώδικα κάτω κάτω αν θέλετε για την αντιγραφή/επικόλληση):

image

Τους πρώτο κλειδί είναι να περιλαμβάνουν τόσο έναν <queryOptions> και <QueryOptions> Κόμβος.  Το δεύτερο κλειδί είναι ότι η <Φάκελος> ο κόμβος είναι μια διεύθυνση URL, όπου ο υπολογιστής-πελάτης έχει πρόσβαση.

Μπορεί να υπάρχουν άλλοι τρόποι να ολοκληρώσουμε αυτό το, αλλά αυτή λειτούργησε καλά για μένα όταν χρησιμοποιώντας jQuery.

Εδώ είναι το φάκελο SOAP για τα ανωτέρω:

<soapenv:Φάκελος xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Οργανισμός>
    <GetListItems xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <listName>Προσαρμοσμένη λίστα με φακέλους Sub</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef όνομα =' Τίτλος’ />
          <FieldRef όνομα ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Φάκελος>
http://demoserver1/Blogging Σενάρια/κατάλογοι/προσαρμοσμένη λίστα με Sub φακέλων/έτος 2006</Φάκελος>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Οργανισμός>
</soapenv:Φάκελος>

Πολλά παραδείγματα και συζητήσεις γύρω από αυτό με ώθησε να πιστεύουν ότι ήταν όλα τα χρειάζομαι <QueryOptions> και καθορίστε ένα όνομα φακέλου.  Για μένα, Μου χρειάζεται τόσο αναδιπλώνονται μέσα <queryOptions> καθώς και να καθορίσετε ένα έγκυρο URL για το <Φάκελος> Κόμβος.

Εδώ είναι το jQuery AJAX εγκατάστασης:

$(έγγραφο).έτοιμο(συνάρτηση() {
       var soapEnv =
           "<soapenv:Φάκελος xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Οργανισμός> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <listName>Προσαρμοσμένη λίστα με φακέλους Sub</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef όνομα =' Τίτλος’ /> \
                              <FieldRef όνομα ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Φάκελος>http://demoserver1/Blogging Σενάρια/κατάλογοι/προσαρμοσμένη λίστα με Sub φακέλων/έτος 2006</Φάκελος> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Οργανισμός> \
           </soapenv:Φάκελος>";

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Lists.asmx, GetList και "τιμή δεν είναι δυνατό να είναι null”

Ανακάλυψα σήμερα που το GetList() μέθοδο σε lists.asmx υπηρεσία Web πρέπει να αποκαλείται πολύ προσεκτικά ή είναι επιρρεπείς να ρίξει ένα μυστηριώδες εξαίρεση "Αξία δεν μπορεί να είναι null" (και αυτό υποθέτοντας ότι μπορείτε να λάβετε παρελθόν το ακόμη χειρότερο μήνυμα γενικού σφάλματος, "Εξαίρεση του τύπου «Microsoft.SharePoint.SoapServer.SoapServerException’ δημιουργήθηκε.")  Ειδικά, Βρήκα ότι δεν μπορείτε να δώσετε οποιοδήποτε είδος πρόθεμα σχετικά με τη μέθοδο GetList.  Το ακόλουθο απόσπασμα jQuery διαφωτίζει το σημείο:

image

Αν το κάνετε που, η υπηρεσία web ανταποκρίνεται με "Αξία δεν μπορεί να είναι null" σύμφωνα με αυτό fiddler-παρείχε την απομαγνητοφώνηση HTTP:

<?XML έκδοση = 1.0»" κωδικοποίηση = "utf-8"?>
  <σαπούνι:Φάκελος
     xmlns:σαπούνι ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:xsd ="
http://www.w3.org/ 2001/σχήματος XML">

  <σαπούνι:Οργανισμός>
    <σαπούνι:Σφάλμα>
      <faultcode>σαπούνι:Διακομιστή</faultcode>
      <faultstring>
        Εξαίρεση του τύπου «Microsoft.SharePoint.SoapServer.SoapServerException’ ρίχτηκε.
      </faultstring>
      <λεπτομέρεια>
        <errorstring xmlns ="
http://schemas.microsoft.com/SharePoint/SOAP/">
Αξία δεν μπορεί να είναι null.
        </errorstring>
      </λεπτομέρεια>
    </σαπούνι:Σφάλμα>
  </σαπούνι:Οργανισμός>
</σαπούνι:Φάκελος>

Φυσικά, πιθανώς δεν θα προσθέτετε πρόθεμα "s0" για τη δική σας, αλλά μερικά εργαλεία είναι επιρρεπείς να κάνουμε (όπως το Eclipse).

Αυτό είναι όλο και πιο συγκεχυμένη / απογοητευτικό επειδή άλλες μεθόδους ανέχεται προθέματα.  Για παράδειγμα, το GetListCollection μέθοδος δεν πειράζει εάν είναι γαλλική, ακόμη και με ανοησίες προθέματα όπως "xyzzy":

image

Αυτό "η τιμή δεν μπορεί να είναι null" φαίνεται αρκετά κοινά με lists.asmx, οπότε ελπίζω αυτό θα βοηθήσει κάποιος στο μέλλον.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Ένθεση ατελείωτα <div> Ετικέτες και jQuery

Αυτό φαίνεται σαν τέτοια ένα αιφνίδιο τέλος θέμα, Δεν είμαι σίγουρος ότι αξίζει πραγματικά blogging σχετικά με, αλλά αυτό ποτέ δεν έχει διακοπεί μου πριν από, Επομένως εδώ θα προχωρήσουμε Χαμόγελο

Εργάζομαι σε ένα έργο, όπου εγώ τράβηγμα ορισμένα δεδομένα από μια αναζήτηση, συσκευασίας αυτό σε ένα μήνυμα XML και στη συνέχεια το XML είναι τελικά μετατραπεί σε HTML μέσω XSLT.  Υπάρχει πολλή jQuery συμμετέχουν, ένα bit που υλοποιεί ορισμένα στηλοθέτησης λειτουργικότητα.  Όταν κάνετε κλικ σε μια καρτέλα (Αλήθεια, ένα <div>), jQuery επικαλείται .hide() και .show() στις διάφορες divs (το φορτίο Αρχική σελίδα λήψεις όλο το περιεχόμενο, ώστε να υπάρχουν σε αυτή την περίπτωση δεν καταχωρήσεων προς τα πίσω).

Ένα σωρό ώρες ago, το tab switching λογική άρχισε να συμπεριφερθούν με αστάθεια και δεν θα εμφανίζει μία μου καρτελών.  Τελικά παρακολούθησα αυτό οφείλεται φυσικά στο γεγονός ότι του internet explorer (τουλάχιστον) πίστευαν ότι το <div> ετικέτες που είναι ένθετες πολύ, πολύ βαθύτερα από τα οποία προορίζονται.Θα εμφανίσει τη γραμμή εργαλείων του δημιουργού:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Τέλος, δείχνει αυτό έκλεισε τελείως εδώ!

Έτσι, Αν έκανα μια $(«#Tab1Content»).απόκρυψη(), Εγώ θα επίσης απόκρυψη Tab2 και εγώ θα μπορούσε ποτέ εμφάνιση Tab2 εάν εγώ δεν δείχνουν επίσης Tab1.  Αντέγραψα και επικόλλησα κώδικα σε visual studio και αυτό έδειξε όλα του div η επένδυση μέχρι ωραία, ακριβώς όπως υποτίθεται ότι κάνει, ψάχνει σαν αυτό:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

Θα χτυπήσει το κεφάλι μου στον τοίχο για λίγο και παρατήρησα ότι στην πραγματική HTML κώδικα παράγει πολλά κενά <div> Ετικέτες, όπως:

<οργανισμός>

  <div id = "Tab1Content">

    <div αναγνωριστικό = «row1» />
    <div αναγνωριστικό = «row2» />

  </div>

  <div id = "Tab2Content">

    <div αναγνωριστικό = «row1» />
    <div αναγνωριστικό = «row2» />

  </div>

</οργανισμός>

(Τα παραπάνω είναι waaaaaaaaaaaay να μετατρέπονται σε κοινότοπα.  Τα κενά tag div tag είναι απολύτως έγκυρες. Ορισμένες μου <div> Ετικέτες ήταν πλήρες του περιεχόμενο, αλλά δεν ήταν πολλά περισσότερα.  Μου ήρθε με την υλοποίηση που μου <XSL:για-κάθε> οδηγίες εκπέμπουν τη συνοπτική div ετικέτες όταν το xsl:δεν for-each' βρει οποιαδήποτε δεδομένα.  Εγώ αναγκάζονται ένα σχόλιο HTML της εξόδου, όπως φαίνεται:

image

 

Αφού το έκανα που, όλα τα του div ευθυγραμμισμένο ωραία και μου καρτέλα εναλλαγής άρχισε να εργάζεται.

Όπως πάντα, Ελπίζω αυτό βοηθά κάποιον σε μια πρέζα.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Ακόμη πιο jQuery–Να αλλάξετε το μέγεθος ένα παράδειγμα εικόνας

Έχω κληρονομήσει ένα τμήμα web από παλιά προμηθευτή του πελάτη και να έχει ένα πρόβλημα μέγεθος εικόνας.  Οι εικόνες πρέπει να είναι 60×50 αλλά για κάποιο περίεργο λόγο, τον αρχικό προμηθευτή τους εξανάγκασε σε 42×42, έτσι φαίνονται στριμωγμένος:

 

Καλή εικόνα

Κακή εικόνα

Εδώ είναι το περιθώριο κέρδους (κάπως απλουστευμένη):

<Πίνακας τάξη = 'επεκταθεί-outlook'>
  <thead>
    <TR>
      <ου  πλάτος = 100′>3 Τρίτη</ου>
    </TR>
  </thead>

  <TBODY>
    <Κλάση TR = «πρόβλεψη»>
      <πλάτος TD = 100′>
        <UL>
          <Li τάξη = «υψηλή»>Υψηλή: 72&DEG;F</Li>
          <Li τάξη = «χαμηλής»>Χαμηλή: 44&DEG;F</Li>
          <Li τάξη = «κατάσταση»>Ηλιόλουστη
            <img src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/EN/trans/cond007.png’ πλάτος ='42’ ύψος ='42’ ALT =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </TBODY>

</Πίνακας>

Θα σημειωθεί ότι ακόμα κι αν το διαδρομή για την ίδια την εικόνα δείχνει την σωστή διάσταση (60×50) ανάγκασε τον αρχικό προμηθευτή σε 42×42.  Γιατί?  Τρελό,.

Ούτως ή άλλως, Θα ήθελα μια γρήγορη και εύκολη λύση σε αυτό το θέμα και γύρισα να jQuery.  Το κόλπο ήταν να εντοπίσει όλα τα κατάλληλα <img> Ετικέτες.  Δεν ήθελα να βόρβορος σχετικά με οποιεσδήποτε άλλες ετικέττες img (των οποίων υπάρχουν πολλές).  Αυτό το κομμάτι της jQuery έκανε το κόλπο:

<σενάριο τύπο = text/javascript"" src ="http://Ajax.googleapis.com/Ajax/libs/jQuery/1.5/jQuery.min.js"></σενάριο>

<σενάριο τύπο = "text/javascript">
     $(έγγραφο).έτοιμο(συνάρτηση () {

         $(«li.condition > img»).κάθε(συνάρτηση (Δείκτης, στοιχείο)
           
{
             $(στοιχείο).CSS("Πλάτος", "60"); 
             $(στοιχείο).CSS("ύψος", "50");
            });
     }); // έγγραφο φορτίο
</σενάριο>

Εκείνο το κομμάτι του κώδικα που βρίσκει τη συλλογή <Li> Ετικέτες κατηγορίας του οποίου είναι "κατάσταση" και <img> τα παιδιά.  Στη συνέχεια εκτελεί επαναλήψεις μέσα από όλα αυτά.  Έλυσα αρέσω έναs γοητεία.

Εγώ κατά πάσα πιθανότητα θα μπορούσε να βελτιώσει αυτό, αλλά ποτέ δεν ήμουν ένα το είδος τύπου unix που έλυσε π να 18 ψηφία ακρίβεια χρησιμοποιώντας sed και awk και δεν είμαι αυτού του είδους, αν jQuery τύπος είτε Χαμόγελο.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Εφαρμογή ενός παγκόσμιου συστήματος αναδυόμενη ειδοποίηση

Έγραψα ένα άρθρο για www.SharePoint.Briefing.com με τίτλο"Εφαρμογή ενός παγκόσμιου συστήματος αναδυόμενη ειδοποίηση.”  Αυτή η λειτουργία τέθηκε σε εφαρμογή για κοινοτικό κολλέγιο να επικοινωνούν κλεισίματα σχολείο λόγω του χιονιού και ούτω καθεξής. 

Χρησιμοποιεί μια προσαρμοσμένη λίστα, από το κουτί του SharePoint web υπηρεσίες και ορισμένες jQuery να κάνουν τη δουλειά.

Εδώ είναι ένα τρέιλερ:

image

Διαβάστε το όλο θέμα εδώ: http://www.sharepointbriefing.com/features/article.php/3918471/Implement-a-Global-Pop-up-Notification-System.htm

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Αναλάβει τον έλεγχο της σας OK και ακυρώσετε κουμπιά

Έγραψα αυτό το άρθρο λίγο πίσω, αλλά μοιάζει με δεν συνδέουν σε αυτό από το blog μου, τη στιγμή, τόσο εδώ πηγαίνει:

image

Αυτό το άρθρο περιγράφει πώς να αναγκάσει newform.aspx να ανακατευθύνει σε μία σελίδα, όταν ο χρήστης κάνει κλικ OK και διαφορετική σελίδα όταν κάνει κλικ στο κουμπί "Άκυρο".

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin