none
EventHandler Créer une tâche dans un dossier RRS feed

  • Question

  •  
    Bonjour à tous,

    Je cherche à créer une tâche dans un dossier via les EventHandler

    Voici le bout de code que j'utilise :

    //Création du répertoire  
    SPListItem folder = _listTache.Folders.Add( "", SPFileSystemObjectType.Folder);  
    folder["Nom"] = monDossier;  
    folder.Update(); 


    //Création d'item
    SPListItem _tache = _listTache.Items.Add(_listTache.RootFolder.SubFolders[dir].Url, SPFileSystemObjectType.File);  
    _tache.Update(); 

    au moment de passe sur _tache.Update(); je reçois une erreur (lors du débugage) Url invalide. J'ai testé en ajoutant "/" devant et/ou derrière mais quenini, idem avec _tache.CopyTo(monDossier);

    Quelqu'un aurait-il une idée svp ?

    Merci d'avance
    vendredi 13 février 2009 16:30

Toutes les réponses

  • Bonjour,

    Il faudrait spécifier le nom du dossier en paramètre du Folders.Add, et passer l'url relative au serveur dans le Items.Add :


    SPListItem folderItem = taskList.Folders.Add(String.Empty, SPFileSystemObjectType.Folder, "nom_du_dossier");
    folderItem.Update();

    SPListItem task = taskList.Items.Add(web.ServerRelativeUrl + "/" + folderItem.Url, SPFileSystemObjectType.File);
    task["Title"] = "ma_tache";
    task.Update();


    lundi 16 février 2009 21:09
  • Bonjour,

    Merci pour cette réponse c'est un peu l'idée que j'avais sauf que le web.ServerRelativeUrl me retourne "/" ce qui donne au final :

    "//Lists/Liste controle/monDossier"

    J'ai testé en enlevant le "/" mais ça me retourne toujours Url invalide. Très bizarre....

    vendredi 20 février 2009 09:18
  • Effectivement le code précédent ne fonctionnait pas pour un site à la racine d'une web application, celui-ci est testé :

    SPSite site = new SPSite("http://moss-dev/");
    SPWeb web = site.OpenWeb();

    String tasksListUrl = SPUrlUtility.CombineUrl(web.ServerRelativeUrl, "/Lists/Liste Controle");
    SPList taskList = web.GetList(tasksListUrl);
    SPListItem folderItem = taskList.Folders.Add(String.Empty, SPFileSystemObjectType.Folder, "nom_du_dossier");
    folderItem.Update();

    String taskUrl = SPUrlUtility.CombineUrl(web.ServerRelativeUrl, folderItem.Url);
    SPListItem task = taskList.Items.Add(taskUrl, SPFileSystemObjectType.File);
    task["Title"] = "ma_tache";
    task.Update();

    J'espère que ça vous aidera :)

    lundi 23 février 2009 07:02