使用c#开发工具包,我如何访问发票上的行ItemID?
我的响应xml有一个部分,看起来像这样:
<Line>
<Desc>TestItem</Desc>
<Amount>66.00</Amount>
<Taxable>false</Taxable>
<ItemId idDomain="QBO">3</ItemId>
<UnitPrice>33</UnitPrice>
<Qty>2</Qty>
<ServiceDate>2013-01-07-08:00</ServiceDate>
</Line>并且可以像这样使用devkit从其中提取数据:
List<Intuit.Ipp.Data.Qbo.Invoice> customerInvoicesWithinDateRange = invoice.ExecuteQuery<Intuit.Ipp.Data.Qbo.Invoice>(context).ToList<Intuit.Ipp.Data.Qbo.Invoice>();
foreach (var invoiceFound in customerInvoicesWithinDateRange)
{
foreach (var line in invoiceFound.Line)
{
things += line.Desc + " <br> ";
things += line.Taxable.ToString() + " <br> ";
things += line.ServiceDate.ToShortDateString() + " <br> ";
things += line.Amount.ToString() + "<br>";
}
}但是对象中没有line.ItemId、line.Qty和line.UnitPrice。
我知道当我将line.Items对象设置为ItemsChoiceType2对象时,但是当我尝试访问line.Items对象时,我得到了"NullReferenceException: object reference not set to an object instance“。
我错过了什么步骤才能得到那个难以捉摸的"3"?
谢谢
编辑:@Peter when I do:
List<Intuit.Ipp.Data.Qbo.Invoice> customerInvoicesWithinDateRange = invoice.ExecuteQuery<Intuit.Ipp.Data.Qbo.Invoice>(context).ToList<Intuit.Ipp.Data.Qbo.Invoice>();
var quantity = customerInvoicesWithinDateRange[0].Line[0].Items[Array.IndexOf(customerInvoicesWithinDateRange[0].Line[0].ItemsElementName, Intuit.Ipp.Data.Qbo.ItemsChoiceType2.Qty)];我得到"System.ArgumentNullException:值不能为空“。在第二条线上。我认为customerInvoicesWithinDateRange.Line.ItemsElementName是空的。它在我的foreach循环中也是空的。
编辑编辑:
嗯,我实际上在查询中有一张发票,我猜它没有任何行。将其封装在以下代码中解决了最后一个障碍:
if (customerInvoicesWithinDateRange[0].Line[0].Items != null)再次感谢您的帮助。
发布于 2013-01-08 06:31:50
Items中的对象在ItemsChoiceType2的ItemsElementName数组中定义。
因此,在不进行任何错误检查的情况下,可以从以下行获取数量:
var quantity = invoices[0].Line[0].Items[Array.IndexOf(invoices[0].Line[0].ItemsElementName, Intuit.Ipp.Data.Qbo.ItemsChoiceType2.Qty)];https://stackoverflow.com/questions/14204783
复制相似问题