O GridView não se lembra do estado entre postbacks

Eu tenho uma página ASP simples com grade de dados (vinculada a uma fonte de objeto). A grade está dentro da página de um assistente e tem uma caixa de seleção 'selecionar' para cada linha.

Em um estágio do assistente, vinculo o GridView:

protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
    {
...
        // Bind and display matches
        GridViewMatches.EnableViewState = true;
        GridViewMatches.DataSource = getEmailRecipients();
        GridViewMatches.DataBind();

E quando o botão Concluir é clicado, eu percorro as linhas e verifico o que está selecionado:

protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
    // Set the selected values, depending on the checkboxes on the grid.
    foreach (GridViewRow gr in GridViewMatches.Rows)
    {
        Int32 personID = Convert.ToInt32(gr.Cells[0].Text);
        CheckBox selected = (CheckBox) gr.Cells[1].FindControl("CheckBoxSelectedToSend");

Mas, nesta fase, GridViewMatches.Rows.Count = 0! Não religo a grade, não preciso, certo? Espero que o estado de exibição mantenha o estado. (Além disso, se eu reconectar a grade, minhas caixas de seleção serão limpas)

Nota: esta página também adiciona dinamicamente controles de usuário no método OnInit. Ouvi dizer que ele pode mexer com o estado de exibição, mas, pelo que sei, estou fazendo isso corretamente e o estado de exibição desses controles adicionados parece funcionar (os valores são mantidos entre as postagens)

Agradecemos antecipadamente por qualquer ajuda!

Ryan

ATUALIZAÇÃO: Isso pode estar relacionado ao fato de eu estar configurando a fonte de dados programaticamente? Gostaria de saber se o mecanismo asp estava vinculando a grade durante o ciclo de vida da página a uma fonte de dados que ainda não estava definida. (Em uma página de teste, o GridView é 'automaticamente' vinculado '. Não quero que a grade seja ligada novamente; só quero os valores do viewstate da postagem anterior!

Além disso, tenho isso no cabeçalho asp: ViewStateEncryptionMode = "Never" - isso foi para resolver uma mensagem ocasional 'Invalid Viewstate Validation MAC'

Para referência, meu GridView é definido da seguinte maneira:

<asp:GridView ID="GridViewMatches" runat="server" AllowSorting="True" AutoGenerateColumns="False" 
    BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
    OnDataBinding="GridViewMatches_OnBinding">
        <Columns>
            <asp:BoundField DataField="PersonID"><ItemStyle CssClass="hidden"/></asp:BoundField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBoxSelectedToSend" runat="server"
                        Checked='<%# DataBinder.Eval(Container.DataItem, "SelectedToSend") %>'/>
                </ItemTemplate>
...

questionAnswers(3)

yourAnswerToTheQuestion