DataTable dtInventory = new DataTable();
dtInventory.Columns.Add("ItemID", typeof(string));
dtInventory.Columns.Add("ItemImageUrl", typeof(string));
dtInventory.Columns.Add("ItemName", typeof(string));
dtInventory.Columns.Add("Tradeable", typeof(string));
string json = new WebClient().DownloadString("storeJSON.txt");
JToken jsonInventory = JToken.Parse(json);
JObject jsonItemData = jsonInventory["StoreData"].Value<JObject>();
foreach (JProperty jItemID in jsonItemData.Properties())
{
string sItemID = jItemID.Name.Trim().ToString();
for (int i = 0; i < jsonItemData.Count; i++)
{
DataRow dtRow = dtInventory.NewRow();
dtRow["ItemID"] = sItemID.ToString();
dtRow["ItemImageUrl"] = jsonItemData[sItemID]["icon_url"].ToString();
dtRow["ItemName"] = jsonItemData[sItemID]["market_name"].ToString();
dtRow["Tradeable"] = jsonItemData[sItemID]["tradable"].ToString();
}
}
this.rptInventory.DataSource = dtInventory;
this.rptInventory.DataBind();
我是c#和asp.net的新手,我花了2个小时来修复这些代码,但我仍然无法将项目绑定到DataTable。请帮帮我。
答案 0 :(得分:0)
创建一个Inventory
对象,并将json项添加到List<Inventory>
,而不是使用数据表。然后,您可以将List<Intentory>
设置为DataSource
的{{1}}。
答案 1 :(得分:0)
看起来您并未向表中添加行,因此在绑定发生时,没有数据。这应该可以解决这个问题:
for (int i = 0; i < jsonItemData.Count; i++) {
DataRow dtRow = dtInventory.NewRow();
dtRow["ItemID"] = sItemID.ToString();
dtRow["ItemImageUrl"] = jsonItemData[sItemID]["icon_url"].ToString();
dtRow["ItemName"] = jsonItemData[sItemID]["market_name"].ToString();
dtRow["Tradeable"] = jsonItemData[sItemID]["tradable"].ToString();
dtInventory.Rows.Add(dtRow); //this line adds the row to the table
}