0
votes

I've searched all over here and Google and still can't find an answer to this. I'm playing around with Amazon's API and am making a simple Windows Form to try and display the data in a DataGridView. The GridView is generating 10 rows for the 10 results I am getting, but is not filling the rows with the actual data. They're just blank.

The code below is a method (GetResults) that return a DataTable. I didn't show all of it because there is a bunch of code above to get the data.

            DataTable dt = new DataTable();
            dt.Columns.Add("ASIN", typeof(string));
            dt.Columns.Add("Title", typeof(string));

            // write out the results
            foreach (var item in response.Items[0].Item)
            {
                Product product = new Product(item.ASIN, item.ItemAttributes.Title);
                Console.WriteLine(product.ASIN);
                var dr = dt.NewRow();
                dr["ASIN"] = product.ASIN;
                dr["Title"] = product.Title;
                dt.Rows.Add();
            }
            return dt;
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            dgvProducts.AutoGenerateColumns = false;
            dgvProducts.DataSource = GetReults();
        }

I know it is getting the info because I am writing it to console and it is showing up correctly.

I also have this basic class for the Product:

public class Product
    {
        private string asin;
        private string title;

        public Product() { }

        public Product(string newAsin, string newTitle)
        {
            this.asin = newAsin;
            this.title = newTitle;
        }


        public string ASIN
        {
            get { return asin; }
            set { asin = value; }
        }

        public string Title
        {
            get { return title; }
            set { title = value; }
        }

I've tried setting AutoGenerateColumns = false and setting the column data bindings myself, but that didn't do anything either.

1

1 Answers

3
votes

You're adding an empty row to the table, not adding your newly created row.

Change
     dt.Rows.Add();
To
     dt.Rows.Add(dr);