Domanda

Ho scritto un modulo di modifica personalizzato per un elenco che significa che perdo certo le funzionalità delle scatole come gli allegati in quanto faceva parte del modulo fuori dalla scatola. Il modo in cui ho implementato il modulo è scrivendo una parte web visiva personalizzata utilizzando il codice ASP.NET e C # dietro e poi durante la distribuzione, nascondo la web part di modifica esistente nella pagina EDITFORM.SPX e quindi aggiungi la mia pagina web ad essa. < / P >.

Il modo in cui ho sviluppato il modulo è con una corretta separazione delle preoccupazioni in cui la mia forma non sa davvero nulla di SharePoint e passa solo un oggetto dati su un oggetto DataManager che scrive i dati su SharePoint. Il problema entra con gli allegati formano che ho scritto. Quello che ho trovato è che SPContext.Current.ListItem.Attachments contiene immediatamente il file nel controllo FileUpload al contrario. Non ho dovuto scrivere alcun codice per questo per accadere - solo innescare un postback mentre un file è selezionato nel controllo.

Nella maggior parte dei casi posso ignorare il fatto che ciò accade e tutto funziona bene perché non aggiorno mai quell'istanza dell'elemento di elenco. Ma in alcuni casi di bordo come il caricamento di un file in cui esiste un allegato con lo stesso nome, il modulo soffia senza nemmeno toccare il mio codice.

Ho anche scoperto che c'è un AttachmentsControl nel SPContext.Current.FormContext.FieldControlCollection e rimuovendolo in ogni evento Page_Init dell'UserControl non aiuta il problema.

Il motivo per cui voglio che il mio modulo nel contesto dell'elemento elenco è in modo che tutte le barre degli strumenti fuori dalla scatola / nastro / menu di contesto / ecc. Potrei reindirizzare dal modulo di modifica a una pagina fuori dal contesto con la mia parte web su di esso, ma questo sembra hackish e inutile (per non parlare della basta cattiva codifica).

Qualcuno ha qualche intuizione sul perché questo comportamento sta accadendo e come posso lavorarci intorno? Sembra un design molto brutto per qualsiasi modulo di elenco per dirottare automaticamente un controllo per il proprio uso come questo. Sento che SharePoint dovrebbe avere il proprio controllo e lasciare solo il controllo ASP.NET solo ma che sembra non essere il caso.

È stato utile?

Soluzione

Su un modulo di elenco standard se un allegato con lo stesso nome è stato aggiunto più volte.Se l'articolo verrà memorizzato, il modulo lancia un'eccezione, che uno degli allegati è stato aggiunto più tempo e impedisce di aggiungere l'elemento.

Nel caso in cui si sovrascrive questa eccezione, che fa sì che nessun allegati sia disponibile quando si tenta di memorizzare la voce dell'elenco.Per evitare questo comportamento è necessario controllare manualmente se è stato aggiunto un allegato più volte altrimenti fallirai sempre.

È necessario rimuovere la web part newform predefinita invece di nasconderlo.Quindi l'eccezione non sarà sollevata e sei in grado di ottenere gli allegati.

Altri suggerimenti

Se si collega un gestore di eventi all'evento ItemAdding si accende sulle condizioni di errore?Potresti essere in grado di utilizzare che per eseguire un codice personalizzato per gestire l'evento o eventualmente sopprimere il messaggio di errore del sistema di sistema e fornire il tuo più bello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top