2016-09-16 4 views
0

Je crée par programme des formulaires InfoPath dans une bibliothèque de formulaires dans SharePoint 2010 à partir de données d'un fichier CSV. Tout fonctionne bien à part les champs de date. Le formulaire refusera d'ouvrir avec une erreur de format. J'ai essayé plusieurs façons de formater la date mais pas de chance jusqu'à présent. Code ci-dessous ...Création par programme d'un formulaire Infopath dans une bibliothèque de formulaires SharePoint avec des dates

Si je formate 2016-10-10, il s'affiche dans la vue Bibliothèque de formulaires, mais je ne parviens toujours pas à ouvrir le formulaire. Cela montre juste une erreur de type de données.

 // Get the data from CSV file. 
     string[,] values = LoadCsv("ImportTest.csv"); 

     //Calulate how many columns and rows in the dataset 
     int countCols = values.GetUpperBound(1) + 1; 
     int countRows = values.GetUpperBound(0) + 1; 

     string rFormSite = "siteurl"; 
     // opens the site 
     SPWeb webSite = new SPSite(rFormSite).OpenWeb(); 
     // gets the blank file to copy 
     SPFile BLANK = webSite.Folders["EventSubmissions"].Files["Blank.xml"]; 

     // reads the blank file into an xml document 
     MemoryStream inStream = new MemoryStream(BLANK.OpenBinary()); 
     XmlTextReader reader = new XmlTextReader(inStream); 
     XmlDocument xdBlank = new XmlDocument(); 
     xdBlank.Load(reader); 
     reader.Close(); 
     inStream.Close(); 

     //Get latest ID from the list 
     int itemID = GetNextID(webSite, "EventSubmissions"); 
     if (itemID == -1) return; 

     //Iterate each row of the dataset    
     for (int row = 1; row < countRows; row++) 
     { 

      //display current event name 
      Console.WriteLine("Event name - " + values[row, 4]); 
      XmlDocument xd = xdBlank; 

      XmlElement root = xd.DocumentElement; 

      //Cycling through all columns of the document// 
      for (int col = 0; col < countCols; col++) 
      { 
       string field = values[0, col]; 
       string value = values[row, col]; 

       switch (field) 
       { 
        case "startDate": 
         value = //How do format the date here ; 
         break; 
        case "endDate": 
         value = ""; 
         break; 
        case "AutoFormID": 
         value = itemID.ToString(); 
         break;      
       } 

       XmlNodeList nodes = xd.GetElementsByTagName("my:" + field); 
       foreach (XmlNode node in nodes) 
       { 
        node.InnerText = value; 
       } 

      } 

      // saves the XML Document back as a file 
      System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); 
      SPFile newFile = webSite.Folders["EventSubmissions"].Files.Add(itemID.ToString() + ".xml", (encoding.GetBytes(xd.OuterXml)), true); 
      itemID++; 
     } 

     Console.WriteLine("Complete"); 
     Console.ReadLine(); 

Merci

Répondre

0

Pour moi, cela a fonctionné

DateTime.Now.ToString ("yyyy-MM-dd")