Foreach 使用 C# 和 JSON 将项目绑定到数据表
Foreach bind items to Datatable with C# and JSON
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。请帮帮我。
创建一个 Inventory
对象并将 json 项添加到 List<Inventory>
而不是使用数据表。然后,您可以将 List<Intentory>
设置为 rptInventory
的 DataSource
。
您似乎没有向 table 添加行,因此当绑定发生时,没有数据。这应该可以解决该问题:
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
}
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。请帮帮我。
创建一个 Inventory
对象并将 json 项添加到 List<Inventory>
而不是使用数据表。然后,您可以将 List<Intentory>
设置为 rptInventory
的 DataSource
。
您似乎没有向 table 添加行,因此当绑定发生时,没有数据。这应该可以解决该问题:
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
}