2012-01-10 79 views
1

我有一個嵌套在重複表中的重複表。嵌套表格包含5列,1年爲1年,4年爲不同季度(財務)。如果項目持續時間超過一年,我需要動態地將行添加到嵌套表中。所以如果項目持續2年,我需要在嵌套表中添加2行並填充數據,如果它持續3年,我需要添加3等。InfoPath 2010:通過以編程方式將行添加到嵌套在重複表中的重複表/節中

我看起來不像讓嵌套表填充任何數據。我爲第一個表使用了一個帶有外部XmlWriter的循環,而嵌套表使用了一個嵌套的XmlWriter。這裏是一個代碼示例:

public void BuildHwSwForecastRow(string vendor, string description, string totalCost, XPathNavigator root) 
    { 
     string myNameSpace = NamespaceManager.LookupNamespace("my"); 

     using (XmlWriter writer = root.SelectSingleNode ("/my:myFields/my:HW_SW_Other_Forecast/my:Forecasts",NamespaceManager).AppendChild()) 
     { 
      writer.WriteStartElement("Forecast", myNameSpace); 
      writer.WriteElementString("HSOF-VendorName", myNameSpace, vendor); 
      writer.WriteElementString("HSOF-Description", myNameSpace, description); 
      writer.WriteElementString("HSOF-TotalCost", myNameSpace, totalCost); 

      using (XmlWriter insideWriter = root.SelectSingleNode("//my:HW_SW_Other_Forecast/my:Forecasts/my:Forecast/my:Quarterly_Breakdowns", NamespaceManager).AppendChild()) 
      { 
       insideWriter.WriteStartElement("Quarterly_Breakdown", myNameSpace); 
       insideWriter.WriteElementString("HSOF-Year", myNameSpace, "2011"); 
       insideWriter.WriteElementString("HSOF-Q1", myNameSpace, ""); 
       insideWriter.WriteElementString("HSOF-Q2", myNameSpace, ""); 
       insideWriter.WriteElementString("HSOF-Q3", myNameSpace, ""); 
       insideWriter.WriteElementString("HSOF-Q4", myNameSpace, ""); 
       insideWriter.WriteEndElement(); 
       insideWriter.Close(); 
      } 
      writer.WriteElementString("HSOF-Total", myNameSpace, "0.0"); 
      writer.WriteEndElement(); 
      writer.Close(); 
     } 
    } 

回答

1

試試這個。唯一的區別是,第二個使用塊在第一個使用塊之外。

public void BuildHwSwForecastRow(string vendor, string description, string totalCost, XPathNavigator root) 
{ 
    string myNameSpace = NamespaceManager.LookupNamespace("my"); 

    using (XmlWriter writer = root.SelectSingleNode ("/my:myFields/my:HW_SW_Other_Forecast/my:Forecasts",NamespaceManager).AppendChild()) 
    { 
     writer.WriteStartElement("Forecast", myNameSpace); 
     writer.WriteElementString("HSOF-VendorName", myNameSpace, vendor); 
     writer.WriteElementString("HSOF-Description", myNameSpace, description); 
     writer.WriteElementString("HSOF-TotalCost", myNameSpace, totalCost); 


     writer.WriteElementString("HSOF-Total", myNameSpace, "0.0"); 
     writer.WriteEndElement(); 
     writer.Close(); 
    } 

    using (XmlWriter insideWriter = root.SelectSingleNode("//my:HW_SW_Other_Forecast/my:Forecasts/my:Forecast/my:Quarterly_Breakdowns", NamespaceManager).AppendChild()) 
     { 
      insideWriter.WriteStartElement("Quarterly_Breakdown", myNameSpace); 
      insideWriter.WriteElementString("HSOF-Year", myNameSpace, "2011"); 
      insideWriter.WriteElementString("HSOF-Q1", myNameSpace, ""); 
      insideWriter.WriteElementString("HSOF-Q2", myNameSpace, ""); 
      insideWriter.WriteElementString("HSOF-Q3", myNameSpace, ""); 
      insideWriter.WriteElementString("HSOF-Q4", myNameSpace, ""); 
      insideWriter.WriteEndElement(); 
      insideWriter.Close(); 
     } 
} 
+1

感謝您的迴應,回頭看了一遍後,我看到了我犯的明顯錯誤。我最終走了一條不同的路線並構建了全行XML,並以此方式添加它。 – stayinwett 2012-06-03 15:51:16

相關問題