Gridview not populating while using a While() structure. C# ASP.Net

后端 未结 6 1433
礼貌的吻别
礼貌的吻别 2021-01-22 18:46

I am having problems with this grid view. I am populating it with a query. However, it will not populate or even appear if I use a while(reader.Read()) structure. Without the

6条回答
  •  无人共我
    2021-01-22 19:00

    The SqlDataReader is forward-only. When you first iterate over the rows, there is "nothing left" in it to display afterwards.

    I suggest that you use the reader to populate a strongly-typed list in memory, and then bind the GridView to the list instead. Example:

    var myList = new List();
    while (myReader.Read())
    {
        myList.Add(new TicketInfo
        {
            TicketCost = Convert.ToDecimal(myReader["TicketCost"]),
            NumTickets = Convert.ToInt32(myReader["NumTickets"])
        });
    }
    grdEvents.DataSource = myList;
    grdEvents.DataBind();
    

    The code example above assumes that you have a class called TicketInfo defined as:

    class TicketInfo
    {
        public decimal TicketCost { get; set; }
        public int NumTickets { get; set; }
    }
    

    If you haven't used generics (such as List in the example) before, I suggest you do some reading on the subject.

提交回复
热议问题