В приведенном ниже коде я пытаюсь получить несколько ответов json API, взять каждый из них и поместить их в новую строку DataGridView (заполняющую в первой строке).Я видел способы сделать это, используя DataTable в качестве DataSource, но в моем случае мне удалось только заполнить DataGridView без использования DataTable.Итак, есть ли способ использовать мой существующий код и решить эту проблему, или я должен использовать DataTable в качестве источника данных?И если использование 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"}}
Iполучаю каждый json с помощью цикла for, а затем DataGridView заполняется этими значениями json.При таком способе первая строка DataGridView заполняется снова и снова, поэтому в результате появляются только последние заполненные значения.