在下面的代码中,我试图获取几个json API响应并将每个响应都放入新的DataGridView行(在第一行中填充)。我已经看到了使用DataTable作为DataSource来做到这一点的方法,但就我而言,我仅设法在不使用DataTable的情况下填充了DataGridView。因此,是否可以使用现有代码来解决此问题,还是必须将DataTable用作DataSource?而且,如果使用DataTablel是唯一的方法,那么如何更改代码以使其正常工作?
for (int i = 1; i < 10; i++)
{
using (var client = new WebClient())
{
var values = new NameValueCollection();
values["apikey"] = "my api key";
string destination = @"http://www.xxxxxx.xx/xx/api/?command=show&id=" + i + "";
var response = client.UploadValues(destination, values);
string responseString = Encoding.Default.GetString(response);
var jobj = JsonConvert.DeserializeObject<JObject>(responseString);
var jsString = jobj["return"].ToString();
var token = JToken.Parse(jsString);
if (token is JArray)
{
DataGridViewRow row = (DataGridViewRow)dataGridView1b.Rows[0].Clone();
dataGridView1b.Rows.Add(row);
var results = token.ToObject<List<JsonResult>>();
dataGridView1b.DataSource = results;
}
else if (token is JObject)
{
DataGridViewRow row = (DataGridViewRow)dataGridView1b.Rows[0].Clone();
dataGridView1b.Rows.Add(row);
var result = token.ToObject<JsonResult>();
var results = new List<JsonResult>();
results.Add(result);
}
}
}
这是json的样子。
{"error":"","return":{"key":"value","key":"value","key":"value"}}
我通过使用for循环获取每个json,然后用这些json值填充DataGridView。通过这种方式,一遍又一遍地填充了DataGridView第一行,因此最后只有最后填充的值才结束。