GridView no rebobina correctamente después de la devolución

Tengo un GridView que tiene un DataSourceID que apunta a un ObjectDataSource. ObjectDataSource apunta a un método que devuelve un LINQ IQueryable usando las propiedades TypeName, SelectMethod y SelectCountMethod del control ObjectDataSource. Lo que pasa es que los datos se cargan correctamente por adelantado. Sin embargo, en la devolución de datos, si elimino las filas de GridView y trato de volver a enlazar utilizando el GridView.DataBind explícito (), no funciona. Sé que LINQ está devolviendo el conteo de filas apropiado y eso es porque he llamado el método count y devuelve el conteo de filas apropiado. Aquí hay un ejemplo 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" />

He intentado agregar un botón y agregar el TestGridView.DataBind (); método para eso. He intentado agregarlo al evento Page_PreRender. No importa lo que intente, no funciona.

Como alguien sugirió a continuación, he intentado moverlo a Page_Load también, y no puedo. Aquí hay un ejemplo aproximado de mi 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();
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta