var itemAmountList = _itemAmountvalue.Split(',');
var listItemDescriptionValues = _itemDescriptionvalue.Split(',');
IEnumerator enum1 = itemAmountList.GetEnumerator();
IEnumerator enum2 = listItemDescriptionValues.GetEnumerator();
DataTable dtCustomInvoiceDetail = new DataTable();
dtCustomInvoiceDetail.Columns.Add("purchaseOrderID");
dtCustomInvoiceDetail.Columns.Add("itemAmount");
dtCustomInvoiceDetail.Columns.Add("itemDescription");
while ((enum1.MoveNext()) && (enum2.MoveNext()))
{
var description = enum1.Current;
var amount = enum2.Current;
DataRow dr = dtCustomInvoiceDetail.NewRow();
dr["itemDescription"] = description;
dr["itemAmount"] = amount;
dr["purchaseOrderID"] = strPoid;
}
上面是我用来迭代列表并填充数据表的代码。
我没有看到任何行添加到数据表
但仍未在数据表中看到任何数据
答案 0 :(得分:3)
在您的代码中
DataRow dr = dtCustomInvoiceDetail.NewRow();
实际上没有向表中添加行,它只创建具有正确列的表行。要添加您需要调用的行
dtCustomInvoiceDetail.Rows.Add(dr)
最后
答案 1 :(得分:1)
问题是您没有将生成的行添加到datatable。
您必须使用
NewRow
方法创建新的DataRow
个对象 与DataTable
相同的架构。创建DataRow
后,您 可以通过DataRowCollection
将其添加到DataTable
对象的Rows
属性
您应该像这样
将行添加到数据表中dtCustomInvoiceDetail.Rows.Add(dr);
另请注意,您可以将整个枚举器逻辑转换为简单的for循环,它具有更高的可读性和更少的开销
for (int i = 0; i < Math.Min(itemAmountList.Count, listItemDescriptionValues.Count); i++)
{
var description = itemAmountList[i];
var amount = listItemDescriptionValues[i];
DataRow dr = dtCustomInvoiceDetail.NewRow();
dr["itemDescription"] = description;
dr["itemAmount"] = amount;
dr["purchaseOrderID"] = strPoid;
}
似乎名称和变量赋值之间也存在不一致。您可以从listItemDescriptionValues
到amount
变量以及从itemAmountList
到description
分配值。请仔细检查一下。