GridView не выполняет правильную привязку после обратной передачи

У меня есть GridView, который имеет DataSourceID, указывающий на ObjectDataSource. ObjectDataSource указывает на метод, который возвращает LINQ IQueryable с использованием свойств TypeName, SelectMethod и SelectCountMethod элемента управления ObjectDataSource. Что происходит, так это то, что данные загружаются правильно заранее. Однако при обратной передаче, если я удаляю строки из GridView и пытаюсь выполнить повторную привязку с использованием явного GridView.DataBind (), это не работает. Я знаю, что LINQ возвращает правильный счетчик строк и тому подобное, потому что я вызвал countmethod, и он возвращает правильный счетчик строк. Вот быстрый пример:

<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" />

Я попытался добавить кнопку и добавить TestGridView.DataBind (); метод к этому. Я попытался добавить его в событие Page_PreRender. Неважно, что я пытаюсь, это не работает.

Как кто-то предложил ниже, я также попытался переместить его в Page_Load, и не пошел. Вот грубый пример моего кода:

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();
}

Ответы на вопрос(6)

Ваш ответ на вопрос