Soluzione al problema: “FileNotFoundException” Con il mio ricevitore di funzionalità.

Stavo lavorando su una caratteristica la scorsa settimana che vorrei aggiungere alcuni ricevitori di eventi a un'istanza di elenco specifico. (Ho bloggato un po' su quel ricevitore elenco qui).

Utilizzando la riga di comando, Potuto installare la funzionalità con nessun errore (ma vedi sotto per l'errore nascosto). Quando ho provato a distribuire la funzionalità sul sito, MOSS si è lamentato di "FileNotFoundException" errore. Questo blog descrive come ho risolto.

Questo è l'errore che MOSS mi ha mostrato nel browser web:

Funzione ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ potrebbe non essere installato perché il caricamento di assembly del ricevitore di eventi "xyzzyFeatureReceiver_0" non riuscita: System.io.FileNotFoundException: Impossibile caricare il file o l'assembly ' xyzzyFeatureReceiver_0’ o una delle relative dipendenze. Il sistema non riesce a trovare il file specificato.
Nome del file: ' xyzzyFeatureReceiver_0’
presso System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Prove assemblySecurity, Assemblea locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound booleano, ForIntrospection Boolean)
presso System.Reflection.Assembly.InternalLoad(AssemblyRef AssemblyName, Prove assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean)
presso System.Reflection.Assembly.InternalLoad(AssemblyString stringa, Prove assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean)
a Reflection(AssemblyString stringa)
presso Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Assemblea associazione registrazione è attivata OFF.
Abilitare la registrazione di assembly legano fallimento, impostare il valore del registro di sistema [HKLMSoftwareMicrosoftFusion.!EnableLog] (DWORD) A 1.
Nota: C'è qualche penalizzazione delle prestazioni associati alla registrazione di guasto legano assieme.
Per disattivare questa funzionalità, rimuovere il valore del registro di sistema [HKLMSoftwareMicrosoftFusion.!EnableLog].

Risolvere i problemi con Windows SharePoint Services.

Saper provocare deliberatamente quell'errore: non installare l'assembly nella global assembly cache. Ma, era nella GAC. Normalmente installare assembly nella GAC trascinandoli nella c:\WINDOWSassembly cartella utilizzando Esplora risorse di windows. Non ho mai sentito 100% comodo che fare perché ho sempre pensato che gacutil esistito per un motivo … così ho provato che. Non faceva alcuna differenza.

Ho cercato il Internets e trovato questo post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Il poster è capitato di usare lo stesso pezzo di radice di codice (dal libro all'interno di WSS da questo elenco) così che era un segno di speranza. Tuttavia, il suggerimento di decorare l'assembly con un [Assemblea: ] direttiva non ha senso per me. Ho provato comunque e non mi sbagliavo. Non faceva alcuna differenza.

Poi ho notato che la mia definizione di classe non era pubblico. Reso pubblico e che non faceva alcuna differenza.

Successivo, Sono andato alla difficoltà di abilitazione "Assemblea associazione fallimento log" (seguendo le istruzioni utili e precise fornite) e questo è dove le cose hanno cominciato a farsi interessanti. Tale log mi mostra che il runtime sta cercando ovunque su tale server per la mia Assemblea. Sembra anche essere alla ricerca di essa nel mio armadietto dei medicinali. Ma … esso non cercarlo nella GAC.

Ho messo sulla mia giacca invernale e andare alla ricerca di Internets nuovamente e scoprire che qualcuno ha avuto questo problema troppo. La lunga discussione in tale registrazione peters fuori nel nulla e non riesco a trovare una soluzione.

Mi muovo la mia Assemblea in uno dei posti che nel registro reclami sta cercando e fare un po' più progressi. Io sono ricompensato con un nuovo errore nel browser quando tento di attivare la funzionalità:

Impossibile creare l'oggetto ricevitore caratteristica dal gruppo "xyzzyFeatureReceiver_0", tipo "Conchango.xyzzyFeatureReceiver" per la funzione b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: ArgumentNullException: Valore non può essere null.
Nome del parametro: tipo
corrispondenza System.Activator.CreateInstance(Tipo tipo, NonPublic booleano)
corrispondenza System.Activator.CreateInstance(Tipo tipo)
presso Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Risolvere i problemi con Windows SharePoint Services.

Tempo per un ultimo viaggio a Internets!

Questa volta scopro, abbastanza prevedibile, quel muschio genera questo errore perché l'assembly non è nella global assembly cache.

Voglio ottenere qualcosa di positivo da questo e provare a sentire un po' orgogliosa che ho creato il Fuggitivo di assembly MSIL, ma non funziona. Io sono semplicemente infastidito. Mi trovo a borbottando "uovo o la gallina" sotto il mio respiro.

Ho finalmente deciso a punt. Creare un progetto completamente nuovo e copia/incolla il codice dal progetto non funzionante incredible-cloaked-from-the-GAC-assembly sopra a questo nuovo progetto. (Cercare un flag di compilazione chiamato qualcosa come "Nascondi da associazione se installato nella Global Assembly Cache assembly" ma non riesce a trovare uno).

Installare la funzionalità e attivarlo e … funziona! Così, Dopo tutto ciò che, Ho dovuto fondamentalmente ' riavviare’ il mio progetto. Questo è un altro motivo perche ' odio il computer.

Ho imparato qualcosa di utile da questo. Ero stato l'installazione di funzionalità utilizzando la riga di comando stsadm tutto il giorno e state usando il "-forza" opzione per abitudine. Per qualche motivo, Non ho usato il - opzione force quando ho installato il nuovo progetto. Stavolta, In realtà ho fatto, veramente dimenticare copiare assembly di questo nuovo progetto nella GAC. Di conseguenza, Ho ricevuto quel FielNotFoundException"" errore. Stavolta, Ho preso da stsadm, non quando ho cercato di attivare la funzione tramite il browser web. Così, -forza in realtà svolge due ruoli. Esso consente di re-installare una funzionalità esistente. Inoltre consente di installare una funzionalità buggy che non può funzionare in fase di esecuzione di eliminazione dell'errore. Probabilmente dice tanto nella guida da qualche parte ma non ho mai notato.

</fine>

Funny domenica: In alto 10 Modi per infastidire tua moglie

  1. Acquistare broccoli quando sai che c'è già più che sufficiente in frigo.
  2. Andare a correre. Rinfrescarsi. Togliere la federa pulita e sostituire con t-shirt. Coprire con federa pulita.
  3. Quando si guida, chiedere se dovremmo andare nel modo sbagliato giù una strada a senso unico.
  4. Per 15 anni, ogni domenica che moglie suggerisce di andare in un museo, esprimere sorpresa che i musei sono aperti di domenica.
  5. Per 15 anni, occasionalmente consigliamo di andare al negozio locale libro domenica. Esprimere la sorpresa che non sono aperti di domenica (Grazie mille Leggi Blue!).
  6. Uso 20 punti per fare un 3 scegliere Disabilita.
  7. In un freddo pomeriggio caduta precoce, entrare nella stanza e accendere l'aria condizionata. Si lamentano che è freddo. Quando la moglie dice, "allora perché si accende che, sciocco" e si alza per spegnerlo, afferrare il posto caldo che ha avuta sul divano. Punti bonus se lei non si rende conto ha fatto solo molto più tardi.
  8. Aprire una lattina di tonno bianco bianco delizioso e mangiarlo direttamente dalla lattina, nel letto, Di notte.
  9. Andare in cucina, mentre la moglie è mangiare la cena, Aprire il cassetto posate e spingere gli utensili intorno fino alla moglie urla, "che cosa stai cercando!"
  10. Al ricevimento di nuovi biglietti da visita, segretamente li posto intorno alla casa: Sotto il letto, in federe, all'interno di tazze di caffè, nella borsetta, nelle tasche del cappotto, vani portaoggetti auto, la dispensa — ovunque si può pensare di.
  11. Scrivere voci di blog di tua moglie.
  12. Svegliati.
  13. Quando camminare per le strade di New York City, essere in allerta per "croccante" oggetti a terra. Tenendo a mente le paure speciale di tua moglie, raggiungere per scegliere uno fino fino e chiedere, "hmm, Mi chiedo che cosa è?" (Essere preparati per moglie al corpo slam è come se lei è un agente dei servizi segreti proteggendo il Presidente da un cecchino o vi ritroverete posa sulla schiena sul marciapiede).
  14. Girare due volte per un parcheggio alla ricerca di spazio. Sai che hai davvero colpito pagare sporco quando urla di tuo figlio sul sedile posteriore, "Oh no! Lo sta facendo ancora una volta!"
  15. Scrivere "top 10" liste che non hanno 10 elementi.

===

Scherzo moglie bonus:

Due colleghi di lavoro maschi andare a pranzo. Uno di loro dice l'altro, "Lasciato liberamente un imbarazzante lapsus freudiano l'altra sera."

"Un lapsus freudiano? Cos'è?"

"Bene, Quando abbiamo finito di mangiare, la cameriera si avvicinò e chiese come abbiamo apprezzato i pasti. Intendevo dire, ' Mi è piaciuto molto il petto di pollo’ ma invece ho detto 'Mi è piaciuto molto il tuo seno'. Ero così imbarazzato."

"Ah," suo collaboratore ha risposto. "Ho avuto la stessa cosa accada a me questo fine settimana con mia moglie. Abbiamo mangiato colazione che volevo chiederle di passare il burro, ma invece ho urlato a lei, ' Hai rovinato la mia vita!’"

</fine>

Technorati Tags:

ID evento 1023: “Impossibile caricare DLL MSSCNTRS contatore flessibile”

AGGIORNAMENTO (04/08/08): Mi sembra di aver risolto questo problema. Dalla riga di comando, Mi sono imbattuto "c:\windowssystem32lodctr/r" secondo una voce parlando di InstallShield problemi e che sembra avere risolto per me.

Ho notato che ultimamente, il mio ventilatore di server e desktop mai si spegne. So che ha usato per spegnere. Ho preso un momento per controllare fuori notato che l'un processo di VMware è stato in esecuzione un coerente 20% utilizzo su uno della CPU. Ho controllato il registro eventi e visto questi errori nel registro dell'applicazione accadendo decine di volte al minuto:

Windows non può caricare il contatore flessibile DLL UGatherer, il primo DWORD nella sezione dati è il codice di errore di Windows.

Windows non può caricare il contatore flessibile DLL UGTHRSVC, il primo DWORD nella sezione dati è il codice di errore di Windows.

Impossibile caricare DLL MSSCNTRS contatore flessibile, il primo DWORD nella sezione dati è il codice di errore di Windows.

Se io forare i dettagli di uno di quei messaggi, Ottengo questo:

Fonte: Perflib

Tipo: Errore

Categoria: Nessuno

ID evento 1023

Ho fatto qualche ricerca e c'era qualche indicazione che potrebbe essere un problema di autorizzazione in materia di accesso alle DLL in questione. Ho suonato in giro con quella roba, ma non avrebbe potuto modificare le cose in modo positivo, così rinunciato a questo.

VMware ha avuto stato fastidioso per me sull'esecuzione di un aggiornamento per parecchio tempo, così buttato giù la versione che avevo installato (a quanto pare "1.0.1 costruire 29996") e fatto l'aggiornamento. Questo mi ha aggiornato alla versione v 1.04. Purtroppo, essa non ha risolto il problema.

Posso fermare il pazzo numero di messaggi andando al mio registro applicazione se chiudo un servizio denominato "Servizio di autorizzazione di VMware". Questo mi impedisce di utilizzando il software VMware, così … non una grande opzione.

Il sistema operativo host è Windows XP 64 bit.

Non credo che questo è sempre successo, ma non ricordo alcun evento particolare che potrebbe avere portato ad esso.

Ecco perché odio il computer.

</fine>

Technorati Tags:

Rapido & Facile: Rinominare il File caricato utilizzando il modello a oggetti di SharePoint tramite un ricevente di eventi

AGGIORNAMENTO: Questo funziona, ma non ci sono limitazioni significative che sono descritti nei commenti. Questo può ancora essere utile in alcuni cirumstances.

AGGIORNAMENTO 2: Nel mio progetto attuale, Gli utenti sempre caricare documenti. Di conseguenza, Io non incorrere in un problema dove MS Word è in esecuzione e pensa che il file è stato rinominato su di esso. Ho incontrato un problema, "il file è stato modificato da qualcun altro" e risolto il problema tramite un flag di tipo semplice semaforo. Gli utenti devono modificare un campo dati meta dal valore predefinito a qualcos'altro. Il itemupdated() ricevitore in cerca di un valore valido lì prima di eseguire effettivamente la rinomina e da allora, Non ho avuto alcun problema. Il chilometraggio può variare.

Ho un requisito di cliente di cambiare il nome del file caricato in una raccolta di documenti specifici per la conformità con una convenzione di denominazione particolare. L'API fornisce una "Rinomina()" Metodo.. Invece, usiamo "MoveTo(…)". Qui è un po' minimal di codice per eseguire questa operazione:

 pubblica eseguire l'override void ItemAdded(SPItemEventProperties Proprietà)
        {
            SPFile f = proprietα.ListItem.File;

            f.MoveTo(Proprietà.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Solo la parte difficile è la "proprietà. ListItem.ParentList.RootFolder.Url". Il MoveTo() Metodo richiede un URL. Che purè punti stringa me nella cartella principale della mia libreria del documento corrente. Questo mi permette di evitare qualsiasi hard coded in mio ricevitore di eventi.

Questa è una versione più utile che fa la stessa cosa, ma assegna il nome del file per il "Titolo":

 pubblica eseguire l'override void ItemAdded(SPItemEventProperties Proprietà)
        {
            DisableEventFiring();

            // Assegnare il titolo di quest'elemento sul nome del file stesso.
 // NOTA: Questa assegnazione deve avvenire prima che vogliamo modificare il file stesso.
 // La chiamata di aggiornamento() la SPFile sembra invalidare le proprietà in
 // certo senso.  Aggiornamenti "Title" non è riuscito fino a che cambia (e l'aggiornamento() chiamare)
 // sono state spostate di fronte la modifica il nome del file.
            Proprietà.ListItem["Title"] = proprietα.ListItem.File.Name;

            Proprietà.ListItem.Update();

            SPFile f = proprietα.ListItem.File;

            // Ottenere l'estensione del file.  Abbiamo bisogno che più tardi.
 stringa spfileExt = Nuovo FileInfo(f. Name).Estensione;

            // Rinominare il file ID dell'elemento di elenco e utilizzare l'estensione del file per mantenere
 // quella parte di esso intatto.
            f.MoveTo(Proprietà.ListItem.ParentList.RootFolder.Url +
                "/" + Proprietà.ListItem["ID"] + spfileExt);

            // La mossa di commettere.
            f.Update();

            EnableEventFiring();
        }

Forum di discussione: Far rispettare migliori pratiche Compliance in ambiente Non banale di MOSS

Un collega, "Mark", ha avviato una discussione newsgroup potenzialmente interessante incentrato sulla "Governance di SharePoint eccellente dall'inizio di stabilire" per un 35,000 ambiente utente.

La discussione è qui: http://groups.google.com/group/microsoft.public.sharepoint.portalserver/browse_thread/thread/6d9a738d981af772/1c390b15c5407db6?#1c390b15c5407db6

Al pop sopra e contribuire!

</fine>

Azione personalizzata URL non visualizza funzionalità nuove

Ho ancora l'abitudine di crafting i miei file funzionalità XML a mano, dal momento che è tutto abbastanza nuovo per me. Non voglio fare affidamento su uno strumento front-end quella roba fa che non capisco (ha detto come ha scritto un post di blog utilizzando uno strumento che non capisce).

Oggi, Stavo tentando di aggiungere un'azione personalizzata per le impostazioni del sito, ma basta non presentarsi. Ho potuto installare la funzionalità e vederlo nelle caratteristiche del sito, ma quando l'ho attivato (senza errore) esso semplicemente non compare nel menu a discesa.

Ho finalmente capito che scritto male "SharePoint" nell'attributo di posizione il <CustomAction> nodo. Questo è il file bad Elements.:

<?XML Versione="1.0" codifica="UTF-8" ?>
<Elementi xmlns="http://schemas.Microsoft.com/SharePoint/">
  <CustomAction
 ID="SiteActionsToolbar"
 GroupId="SiteActions"
 Posizione="Microsoft.Sharepoint.StandardMenu"
 Sequenza="100"
 Titolo="Ciao!"
 Descrizione="Azione menu personalizzati aggiunti tramite una caratteristica."
 ImageUrl="_layouts/images/menuprofile.gif">

    <UrlAction URL="http://www.xyzzy.com"/>

  </CustomAction>
</Elementi>

Buona:

<?XML Versione="1.0" codifica="UTF-8" ?>
<Elementi xmlns="http://schemas.Microsoft.com/SharePoint/">
  <CustomAction
 ID="SiteActionsToolBar"
 GroupId="SiteActions"
 Posizione="Microsoft.SharePoint.StandardMenu"
 Sequenza="100"
 Titolo="Ciao!"
 Descrizione="Azione menu personalizzati aggiunti tramite una caratteristica."
    >
    <UrlAction URL="http://www.xyzzy.com"/>
  </CustomAction>
</Elementi>

Mi ci sono volute due ore buone per capirlo 🙂

Prendo conforto nel fatto che qualche giorno in futuro, Sarò in grado di dire con convinzione, "back in the day, Ho dovuto camminare tre miglia salita nella neve (a piedi nudi!) al fine di distribuire una funzionalità personalizzata in MOSS. Voi ragazzi, non sai quanto sia facile lo avete! Scendere il mio prato!"

Non vedo l'ora.

</fine>

Technorati Tags: ,

Blog Stats

Ho pensato che alcune persone potrebbero essere interessati a statistiche del mio blog. È possibile utilizzare mio come un punto di riferimento per confrontare il proprio.

Io corro il mio blog su windows live interamente. Essi raccolgono statistiche per me e io non conosco alcun modo per controllare che. Va bene, per quanto va, ma è abbastanza limitato in quanto non posso fare molte analisi reale con esso. Mi piacerebbe molto, per esempio, per essere in grado di generare un elenco dei miei più frequentemente colpito post ma ho non possiamo farlo senza un processo manuale proibitivo. Se qualcuno conosce meglio, per favore mi dica.

Vivere gli spazi che lo stato mi dica: totale risultati per il giorno, visite totali per la settimana e totale visite dal giorno zero. Mi dice anche che cosa gente ha fatto per arrivare al mio blog (e. g. Google, Link forum MSDN, ecc).

In qualche modo, un successo"" è ovvio. Se stai leggendo questa frase ora, quasi certamente sei registrato come un solo colpo.

RSS è un po' di confusione. Da un lato, Vedo colpi singoli RSS tutto il giorno. Ma, Vedo anche RSS "Sweep". Una spazzata è quando vedo 20 o 30 Colpi RSS tutto all'interno di una seconda finestra di uno o due. Suppongo che queste sono cose automatizzate come il check-in sul mio sito google, Forse browser di altre persone … Non sono sicuro. Essi sono sicuramente una sorta di processo automatizzato. Non posso dire, Tuttavia, come molti dei miei colpi totali sono automatizzati e quanti hanno un essere umano reale sul lato opposto. Direi almeno 100 colpi al giorno sono automatizzati.

Sopra i numeri!

Ho scritto il mio primo post di blog il 27 luglio, 2007.

Ho scritto circa 60 voci di Blog da allora, più di 50 cui si riferiscono direttamente a SharePoint.

Ho iniziato a tenere traccia dei miei successi in un foglio di calcolo su base giornaliera, alla fine di settembre.

Mensile inizia:

Prima settimana di: Totale Hits
Ottobre 1,234
Novembre 2,162
Dicembre 3,071
Gennaio 2008 4,253

Totale di mese

Mese Totale Hits
Ottobre 6,620
Novembre 11,110
Dicembre 13,138

Segni di acqua alta

Tipo Totale Hits
Giorno migliore 958
Settimana migliore 4,253
Totale Hits dal giorno Zero 42,438

Sono interessato in altri’ Statistiche. Se si cura di condividere la vostra nei commenti, si prega di fare!

</fine>

Technorati Tags:

Domenica mattina Funny: “Sì, Sì, Sì. Bla, bla, bla.”

Circa sei anni fa, Io e mio figlio di quattro anni sono stati a guardare sopra un Canale Discovery "attacchi di squali" speciale (Forse questo uno). Era molto giovane al punto e sono sempre stato preoccupato che cosa potesse vedere uno spettacolo come questo e come egli prenda. Non volevo lui per sviluppare, per esempio, qualsiasi speciale paure dell'acqua o blab qualcosa di inappropriato ai suoi amici e possibilmente causare la sua rete di amico baby a venuto arrestandosi giù.

Individuazione gestisce molto bene questi tipi di soggetti. Non si tratta di creazione di un paura di qualcosa, ma piuttosto per dimostrare come insolito è per gli squali ad attaccare gli esseri umani.

Così, Stiamo guardando esso e c'è questo un attacco particolarmente spaventoso che coinvolge una piccola ragazza. Come Discovery sta costruendo il dramma dell'attacco, mio figlio (Chi è sempre stato estremamente nervoso comunque), è sempre molto eccitato. Faccio alcuni rumori su come insolito sia per gli squali ad attaccare le persone, e quanto male la povera ragazza deve sentirsi. Sto cercando di spiegare che la gente recuperare da questi eventi e diventare più forte per esso. Tuttavia, Io avevo frainteso la sua eccitazione. Egli non era preoccupato per la ragazza a tutti. Invece, mentre battendo le mani, lui mi dice, "Gli squali amarla! È fantastico. È meraviglioso. Suo un sogno che si avvera!"

Pensavo che fosse divertente, ma anche molto scioccanti. Da un lato, Ero contento — anche un po' orgogliosi — che potrebbe avere forti sentimenti empatici, cross-specie anche se possono essere. Come esseri umani, Abbiamo bisogno di sviluppare i nostri muscoli empatiche"" quindi parlare o finirete come Questo ragazzo 🙂 On the other hand, si sentiva cross-specie empatia verso una specie che si stava esibendo il comportamento ostile ai suoi. Ero veramente in difficoltà con questo quando il narratore ha usato la parola "paradigma". Mio figlio accorto e mi ha chiesto cosa che significava.

Che non è tale una parola facile descrivere per quattro anni, ma ho dato una prova. Quando penso alla parola "paradigma", Thomas Kuhn è mai lontano dai miei pensieri. Ho letto La struttura delle rivoluzioni scientifiche Torna a Lafayette e in meglio o in peggio, la parola "paradigma" è incinta di significato per me. (Sorta di come la parola "contatto" dopo aver sentito una voce film telefono Dimmi dove ho potuto vedere quel film [Pensavo che il libro era meglio]; Dico sempre a me stesso, "CONTATTO!" ogni volta che vedi o sentito qualcuno dire "contatto").

In ogni caso, Sto cercando di spiegare a lui una definizione Kuhn, che è "un movimento storico del pensiero" e che è un "modo di pensare con un numero di built-in ipotesi che sono difficili da fuggire per persone che vivono in quel momento." Naturalmente, non si può parlare come di un quattro - anno-vecchio, così sto cercando di definire successivamente a piccoli pezzi e sensazione piuttosto orgoglioso di me stesso come lo faccio. (Ho appena sapeva che qualcuno di fuori del Collegio sarebbe cura che avevo letto Kuhn!).

Io sono solo il riscaldamento al compito quando lui mi interrompe. Agitando la mano nella mia direzione generale e mai prendere i suoi occhi fuori un altro attacco di squalo brutale, Egli dice solo, "sì, Sì, Sì. Bla, bla, bla.".

So much for that 🙂

A quel punto, Ho deciso di scappare, retoricamente parlando, Sedetevi, e godetevi gli squali attaccano gli esseri umani con mio figlio.

</fine>

Technorati Tags:

Interruttore vista basato sull'ID utente In un modulo di InfoPath

Abbiamo avuto un sviluppato un modulo di InfoPath con viste multiple per sostenere un nuovo noleggio / processo di on-boarding. Quando l'azienda assume una nuova persona, il reparto IT e altri gruppi è necessario agire (set up payroll, consentono di accedere alle applicazioni appropriate, individuare una scrivania, ecc). Utilizziamo il modulo, ma una visione diversa del modulo per ognuna di queste funzioni.

In questa società, la maggior parte delle persone coinvolte nel processo di business sono IT-savvy, così, quando si accedere al modulo, loro visualizzazione predefinita è un menu"" Mostra con pulsanti che indirizzarli alla loro specifica funzione. Tuttavia, Abbiamo bisogno di semplificare le cose per responsabile diretto di nuova assunzione. Questa persona non dovrebbe vedere che qualsiasi di esso correlato roba. Infatti, Lei dovrebbe vedere solo una visualizzazione del modulo e nemmeno avere la possibilità di vedere le altre visualizzazioni.

Nel nostro caso, che diretta account manager è direttamente legato alla forma di cortesia di un contatti Selettore (che ho sempre voglia di chiamare una selezione di utenti"" per qualche motivo).

I passaggi sono come segue:

1. In modalità progettazione, Vai a strumenti-> Opzioni di forma-> Aprire e salvare.

2. Selezionare "regole".

3. Creare una nuova regola cui azione è "switch per visualizzare" e la cui condizione sfrutta il userName() funzione.

userName() Restituisce il semplice"" nome utente senza il dominio. Se accedo al SharePoint con credenziali "domainpagalvin", userName() Restituisce "pagalvin".

Il selettore di contatto fornisce tre bit di informazioni per un contatto. Il "AccountID" porzione è più utile per questo scenario. L'unica cosa che lo rende anche un po' di sfida è che il selettore di contatto (nel mio ambiente comunque) Restituisce l'ID utente e dominio, come in "domainpagalvin". Questo ci impedisce di fare una condizione di uguaglianza semplice dal AccountID ("domainpagalvin") non sarà mai uguale userName() ("pagalvin").

Possiamo ottenere tutto questo utilizzando il "contiene" Operatore: AccountID contiene userName().

Possiamo prendere ulteriormente e pre-pend un dominio hard-coded davanti al nome utente() funzione per ottenere il nostro controllo di uguaglianza ed eliminare il rischio di un falso positivo sulla contiene operatore.

Ci sarebbe davvero piaciuto passare automaticamente vista per altri utenti in base alla loro appartenenza al gruppo di sicurezza AD. Per esempio, Quando un membro del "esso Analytics" gruppo accede a forma, passare automaticamente alla visualizzazione Analitica IT. Non abbiamo avuto tempo per la sua attuazione, ma il mio primo pensiero è quello di creare un servizio web che avrebbe un metodo come "IsMemberOfActiveDirectorySecurityGroup", passare il nome utente() e tornare indietro true o false. Qualcuno ha qualsiasi altro, idea più intelligente? C'è qualche funzione di SharePoint che possiamo sfruttare da InfoPath per rendere tale determinazione?

</fine>

Technorati Tags:

Accidentalmente aggiunta di codice a un modulo di InfoPath; Deliberatamente rimuoverlo

Quando si lavora con i pulsanti su un form, Aggiungiamo spesso regole. È accedere all'editor di regole dalle proprietà del pulsante.

Quando si fa clic rapidamente intorno, è facile accidentalmente fare clic su "Modifica codice modulo" invece di regole" …".

La prima volta ho fatto questo, Ho annullato fuori l'editor di codice. Tuttavia, Quando ho provato a pubblicare il modulo in poco tempo dopo, e ' richiesto che pubblicare come un modello di modulo approvato dall'amministratore" (avanzata)". Non ho fatto in realtà qualsiasi programmazione e non volevo assolutamente passare attraverso un processo di approvazione inutili. Ero un po ' di panico al momento a causa di vincoli di tempo. Per ottenere passato, Ho semplicemente ripristinato un backup precedente e ha continuato. Recentemente avevo visto alcuni post del blog su persone che vanno in XML del modulo per modificare le cose e avevo paura che avrei dovuto fare qualcosa di simile.

Oggi, Ho fatto di nuovo. Stavolta, Ho avuto un po ' più tempo sulle mie mani e trovato che si può facilmente annullare questo.

Vai a:

Strumenti-> Opzioni di forma-> Programmazione: "Rimuovere codice"

Non ottiene molto più facile di quello.

</fine>

Technorati Tags: ,