这是一个将值设置为DB
resultset
的自定义对象的函数,然后我想再次返回datatable
。
public DataTable getProductsTable(DataSet productData)
{
DataTable dt = new DataTable();
try
{
int i = 0;
dt.Columns.Add("catid", typeof(string));
for (i = 0; i <= productData.Tables[0].Rows.Count - 1; i++)
{
productData dataObj = new productData();
dataObj.id = (string)productData.Tables[0].Rows[i]["id"].ToString();
dataObj.barcode = (string)productData.Tables[0].Rows[i]["barcode"].ToString();
dataObj.catid = (string)productData.Tables[0].Rows[i]["catid"].ToString();
dataObj.entity_id = (string)productData.Tables[0].Rows[i]["entity_id"].ToString();
dataObj.sku = (string)productData.Tables[0].Rows[i]["sku"].ToString();
dataObj.name = (string)productData.Tables[0].Rows[i]["name"].ToString();
dataObj.price = (string)productData.Tables[0].Rows[i]["price"].ToString();
dataObj.final_price = (string)productData.Tables[0].Rows[i]["final_price"].ToString();
dataObj.qty = (string)productData.Tables[0].Rows[i]["qty"].ToString();
dataObj.is_in_stock = (string)productData.Tables[0].Rows[i]["is_in_stock"].ToString();
dataObj.special_from_date = (string)productData.Tables[0].Rows[i]["special_from_date"].ToString();
dataObj.special_to_date = (string)productData.Tables[0].Rows[i]["special_to_date"].ToString();
dataObj.status = (string)productData.Tables[0].Rows[i]["status"].ToString();
dataObj.parent_id = (string)productData.Tables[0].Rows[i]["parent_id"].ToString();
dataObj.type_id = (string)productData.Tables[0].Rows[i]["type_id"].ToString();
//data.Add(dataObj);
dt.Rows.Add(dataObj);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return dt;
}
但它不起作用,在我运行上面的函数后,显示所有columns
但所有rows
都没有显示没有值,第一列只显示namespace.productData
。有人如何解决这个问题?
答案 0 :(得分:1)
dt
只有一列("catid"
)。为每个属性添加更多列,如下所示:
DataTable dt = new DataTable()
{
Columns = { "id", "barcode", "catid", etc...}
};
DataTable.Rows
属于DataRowCollection
类型,其中包含Add
方法的2次重载:
1. public void Add(DataRow row)
2. public DataRow Add(params object[] values)
dt.Rows.Add(dataObj);
使用第二个重载并在第一列中添加单个值。要正确添加值,请使用
dt.Rows.Add(dataObj.id, dataObj.barcode, etc... );