Выберите метод ObjectDataSource, вызываемый перед кнопкой обновления - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть список данных с ObjectDataSource, проблема в том, что когда я вызываю метод обновления, метод выбора списка данных выполняется перед методом обновления, который в результате не показывает обновленный список данных, мне нужно f5, чтобы увидеть обновленные результаты ниже код:

AspView

<asp:DataList ID="CustomersDefaultPaging" runat="server" Width="100%" 
    RepeatColumns="1" EnableViewState="False" 
    DataSourceID="CustomersDefaultPagingDataSource" DataKeyField="Id">
    <ItemTemplate>.....</ItemTemplate>
  <asp:ObjectDataSource ID="CustomersDefaultPagingDataSource" runat="server"
        OldValuesParameterFormatString="original_{0}" SelectMethod="GetCustomersAsPagedDataSource"
        TypeName="mobilecustomers" 
    OnSelected="CustomersDefaultPagingDataSource_Selected">

CodeBehind

     protected void CustomersDefaultPagingDataSource_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
    // Reference the PagedDataSource bound to the DataList
    PagedDataSource pagedData = (PagedDataSource)e.ReturnValue;

    // Remember the total number of records being paged through across postbacks
    TotalRowCount = pagedData.DataSourceCount;

    // Configure the paging interface based on the data in the PagedDataSource
    FirstPage.Enabled = !pagedData.IsFirstPage;
    PrevPage.Enabled = !pagedData.IsFirstPage;
    NextPage.Enabled = !pagedData.IsLastPage;
    LastPage.Enabled = !pagedData.IsLastPage;

    // Display the current page being viewed...
    CurrentPageNumber.Text = string.Format("You are viewing page {0} of {1}...", PageIndex + 1, PageCount);
}

     protected void btnSave_Click(object sender, EventArgs e)
{
    foreach (DataListItem item in CustomersDefaultPaging.Items)
    {
        customers.UpdateCustomerAddress(.........);


    }
}

DataAcess

      static public DataTable GetAllCustomers()
     {

    string sql = "Select * from [Customers] where [Upgrade] = 0";
    SqlDataAdapter da = new SqlDataAdapter(sql, ConnectionString);
    DataTable dt = new DataTable();
    da.Fill(dt);
    return dt;
    }

      public PagedDataSource GetCustomersAsPagedDataSource(string sortExpression, int pageIndex, int pageSize)
{

    DataTable dt = new DataTable();
    dt = GetAllCustomers();
    dt.DefaultView.Sort = sortExpression;
    // Limit the results through a PagedDataSource
    PagedDataSource pagedData = new PagedDataSource();
    pagedData.DataSource = dt.DefaultView;
    //pagedData.DataBind();
    pagedData.AllowPaging = true;
    pagedData.CurrentPageIndex = pageIndex;
    pagedData.PageSize = pageSize;
    return pagedData;
}

При щелчке по обновлению в списке данных должны отображаться только те клиенты, у которых значение обновления равно 0. Когда я обновляю поле до 0, оно обновляет базу данных sql, но в списке данных оно не отображается, мне нужно обновить его, чтобы увидеть обновления.

1 Ответ

1 голос
/ 03 февраля 2012

Очевидно, DataList не выполняет собственную привязку.Я не знаю, сработает ли это, но как насчет подключения к событию DataList Updated и принудительной привязки сетки к нему.Может ли это помочь?

Из того, что я прочитал, элемент управления GridView намного лучше звучит с ObjectDataSource.Если бы это был я, у меня может возникнуть соблазн поменять DataList на GridView и посмотреть, поможет ли это.Или, по крайней мере, запустите несколько быстрых тестов и посмотрите.

Все немного расплывчато, правда

...