GridView não Rebinding corretamente após o Postback

Eu tenho um GridView que tem um DataSourceID apontando para um ObjectDataSource. O ObjectDataSource aponta para um método que retorna um IQeryable LINQ usando as propriedades TypeName, SelectMethod e SelectCountMethod do controle ObjectDataSource. O que acontece é que os dados são carregados corretamente antecipadamente. No entanto, no postback, se eu remover as linhas do GridView e tentar religar usando o GridView.DataBind () explícito, ele não funcionará. Eu sei LINQ está retornando o número de linhas apropriado e tal porque eu chamei o countmethod e retorna o número de linhas apropriado. Aqui está um exemplo rápido:

<asp:GridView ID="TestGridView" runat="server" PageSize="20" 
    AutoGenerateColumns="false" AllowPaging="true" 
    AllowSorting="false" DataSourceID="TestDataSource">
    <Columns>
        ...
    </Columns>
</asp:GridView>

<asp:ObjectDataSource ID="TestDataSource" runat="server" 
    EnablePaging="true" SelectCountMethod="GetDetailCount" 
    SelectMethod="GetDetails" TypeName="MyApp.PageClass" />

Eu tentei adicionar um botão e adicionando o TestGridView.DataBind (); método para isso. Eu tentei adicioná-lo ao evento Page_PreRender. Não importa o que eu tente, não está funcionando.

Como alguém sugeriu abaixo, eu tentei movê-lo para Page_Load também, e não vá. Aqui está um exemplo aproximado do meu código:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // Set "initial" query parameters, then ...
        BindData();
    }
}

private void BindData()
{
    // EDITED: Removed the code below since I'm not looking to delete the
    //         rows from the database, but rather get the GridView to rebind
    //         which its not.
    ////Remove all current rows from the GridView
    //int colCount = TestGridView.Rows.Count;
    //for (int x = 1; x <= colCount; x++)
    //{
    //    TestGridView.DeleteRow(x);
    //}

    // Bind GridView to the ObjectDataSource
    TestGridView.DataBind();
}

protected void RegenerateImageButton_Click(object sender, ImageClickEventArgs e)
{
    // Set "updated" query parameters, then ...
    BindData();
}

questionAnswers(6)

yourAnswerToTheQuestion