簡體   English   中英

在帶有日期的SharePoint表單庫中以編程方式創建Infopath表單

[英]Programmatically create Infopath form in SharePoint form library with dates

我正在以編程方式從CSV文件中的數據在SharePoint 2010中的表單庫中創建InfoPath表單。 除了日期字段之外,所有其他功能都可以正常工作。 表單將拒絕打開,並出現格式錯誤。 我嘗試過多種格式化日期的方法,但到目前為止還算不上運氣。 下面的代碼...

如果我格式化2016-10-10,那么它的確會顯示在“表單庫”視圖中,但是我仍然無法打開表單。 它只是顯示數據類型錯誤。

        // 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();

謝謝

對我來說這很有效

DateTime.Now.ToString(“ yyyy-MM-dd”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM