如何逐行填充DataGridView,其中每一行代表一个JSON API响应?

时间:2019-02-07 11:48:53

标签: c# json datagridview

在下面的代码中,我试图获取几个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第一行,因此最后只有最后填充的值才结束。

0 个答案:

没有答案