Как заполнять DataGridView строка за строкой, где каждая строка представляет ответ API json? - PullRequest
0 голосов
/ 07 февраля 2019

В приведенном ниже коде я пытаюсь получить несколько ответов 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 заполняется снова и снова, поэтому в результате появляются только последние заполненные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...