Q:

integer not incrementing, list not growing... values from session c# asp.net

I am building a very basic "dice cricket" simulator. I am trying to track the completed innings and overs as well as the scores using integers and lists that I am storing in the asp.net Session.
I have an "innsOver" class representing a set of 6 deliveries, with an integer for each delivery representing the outcome of the ball.
public class innsOver
{
public int overNumber { get; set; }
public int ball1 { get; set; }
public int ball2 { get; set; }
public int ball3 { get; set; }
public int ball4 { get; set; }
public int ball5 { get; set; }
public int ball6 { get; set; }
}

I also have 2 Lists based on this class, to represent 2 innings:
List<innsOver> inns1 = new List<innsOver>();
List<innsOver> inns2 = new List<innsOver>();

I have also declared integers for the number of complete inns (so I know whether I am playing inns1 or inns 2) and the number of complete overs (so i know how many overs are bowled). These are 
int oversComplete = 0;
int innsComplete = 0;

The 2 integers oversComplete and innsComplete and the 2 lists inns1 and inns2 are declared globally.
The "over" is played by pressing a button, which calls the playOver() method which itself calls a bowlDelivery() method. When the playOver() method is completed it should increment the completeOvers integer, add the completed over to the appropriate innnings list (inns1 or inns2) and return that to a gridView.
public void bowlOver()
{
    //other processing checks which end the over is bowled from
   //which batsman is the striker / non-striker and who is bowling.

    for (int i = 1; i <7; i++)
    {
        int x = bowlDelivery();
        int b = 0;
        if (x == 5)
        {
            //this represents a chance of a wicket that was 
            //unsuccessful so no run scored
            b = 0;
        }
        else if (x == 7)
        {
            //this means a wicket fell so i have wicket processing;
        }
        else if (x == 1 || x == 3)
        {
            b = x;
            //award 1 run & change striking batsman
        }
        else
        {
            b = x;
           //2, 4 or 6 runs awarded
        }
        //the outcome is returned to the correct ball
        switch (i)
        {
            case 1:
                activeOver.ball1 = b;
                break;
            case 2:
                activeOver.ball2 = b;
                break;
            case 3:
                activeOver.ball3 = b;
                break;
            case 4:
                activeOver.ball4 = b;
                break;
            case 5:
                activeOver.ball5 = b;
                break;
            case 6:
                activeOver.ball6 = b;
                break;
        }

    }
    //the over result is returned to the correct inns list
    switch (innsComplete)
    {
        case 0:
            Session["inns1"] = inns1;
            Session["oversComplete"] = oversComplete;
            oversComplete = (int)Session["oversComplete"];
            activeOver.overNumber = oversComplete + 1;
            oversComplete = activeOver.overNumber;
            inns1 = (List<innsOver>)Session["inns1"];
            inns1.Add(activeOver);
            GridView3.DataSource = inns1;
            GridView3.DataBind();
            Session["inns1"] = inns1;
            Session["oversComplete"] = oversComplete;
            break;
        case 1:
            Session["inns2"] = inns2;
            Session["oversComplete"] = oversComplete;
            oversComplete = (int)Session["oversComplete"];
            activeOver.overNumber = oversComplete + 1;
            oversComplete = activeOver.overNumber;
            inns2 = (List<innsOver>)Session["inns2"];
            inns2.Add(activeOver);
            GridView3.DataSource = inns2;
            GridView3.DataBind();
            Session["inns2"] = inns2;
            Session["oversComplete"] = oversComplete;
            break;
    }
}

public int bowlDelivery()
{
   //currently the result of each ball is completely random but i will add weighting later
    int x = rnd.Next(1, 7);
    if (x == 5)
    {
        int y = rnd.Next(1, 6);
        if(y > 4)
        {
            x = 7;
        }
        else
        {
            x = 5;
        }
    }
    return x;
}

However, at the moment I only ever get a single over returned, and the overNumber is always "1". The ball values change, so it just seems to be playing the 1st over repeatedly. I'm expecting (trying to achieve) the over overNumber incrementing and additional rows being added to the innsX list displayed in the gridview.
Any suggestions of what I have wrong?

A:

At the beginning of each case statement you have Session["inns1"] = inns1;  Where is innsX coming from?  Is it a new list that gets set to the Session every time?  In that case it looks like Session["innsX"] gets overwritten each time and thus there is only one record to display in the grid.

