2012-02-03 10 views
0

ObjectDataSourceでデータリストを取得しました。問題は、更新メソッドを呼び出すと、データリストのselectmethodが更新メソッドより前に実行されます。更新結果を確認するために、F5を持って、以下のコードです:ObjectDataSourceのメソッドを選択して、更新ボタンの前に呼び出されます

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

分離コード

 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、それがSQL DBを更新するために、フィールドを更新するときCurretly、そのアップグレード値0がある顧客のみを表示すべきデータリストをクリックし、それは私がするためにそれを更新する必要があるデータリストにショーをdoesntの更新を参照してください。

答えて

1

明らかにDataListはそれ自身の再バインドをしていません。私はこれがうまくいくかどうかわからないが、DataList Updatedにフックしてグリッドを強制的にバインドすることはどうだろうか。それが助けてくれますか?

GridViewのコントロールは、ObjectDataSourceでもっとうまく再生されています。それは私でしたをGridViewのために交換して、それが役立つかどうか調べるように誘惑されるかもしれません。または、少なくともいくつかの簡単なテストを実行し、参照してください。

少し漠然といっても

関連する問題