2011-09-16 21 views
0

[保存]をクリックした後に変更が反映されないのはなぜですか?Telerik MVCグリッドバッチ編集

製品リポジトリ:

public class ProductRepository 
{ 
    NorthwindDataContext context = new NorthwindDataContext(); 

    public IList<EditableProduct> All() 
    { 
     return (from product in context.Products 
       select new EditableProduct { 
        ProductID = product.ProductID, 
        ProductName = product.ProductName, 
        UnitPrice = product.UnitPrice.HasValue ? product.UnitPrice.Value : default(decimal), 
        UnitsInStock = product.UnitsInStock.HasValue ? product.UnitsInStock.Value : default(int), 
        Discontinued = product.Discontinued, 
        LastSupply = DateTime.Today 
       }).ToList(); 
    } 

    public EditableProduct One(Func<EditableProduct, bool> predicate) 
    { 
     return All().Where(predicate).FirstOrDefault(); 
    } 

    public void Update(EditableProduct product) 
    { 
     EditableProduct target = One(p => p.ProductID == product.ProductID); 

     if (target != null) 
     { 
      target.ProductName = product.ProductName; 
      target.UnitPrice = product.UnitPrice; 
      target.UnitsInStock = product.UnitsInStock; 
      target.Discontinued = product.Discontinued; 
      target.LastSupply = product.LastSupply; 
     } 
    } 

    public void Insert(EditableProduct product) 
    { 
     product.ProductID = All().OrderByDescending(p => p.ProductID).First().ProductID + 1; 
     All().Insert(0, product); 
    } 

    public void Delete(EditableProduct product) 
    { 
     EditableProduct target = One(p => p.ProductID == product.ProductID); 
     if (target != null) 
     { 
      All().Remove(target); 
     } 
    } 
} 

コントローラー:

public partial class GridController : Controller 
{ 
    ProductRepository productRepository = new ProductRepository(); 

    public ActionResult EditingBatch() 
    { 
     return View(); 
    } 

    [HttpPost] 
    [GridAction] 
    public ActionResult _SelectBatchEditing() 
    { 
     return View(new GridModel(productRepository.All())); 
    } 

    [HttpPost] 
    [GridAction] 
    public ActionResult _SaveBatchEditing([Bind(Prefix = "inserted")]IEnumerable<EditableProduct> insertProducts, 
     [Bind(Prefix = "updated")]IEnumerable<EditableProduct> updatedProducts, 
     [Bind(Prefix = "deleted")]IEnumerable<EditableProduct> deletedProducts) 
    { 
     if (insertProducts != null) 
     { 
      foreach (var product in insertProducts) 
      { 
       productRepository.Insert(product); 
      } 
     } 
     if (updatedProducts != null) 
     { 
      foreach (var product in updatedProducts) 
      { 
       var target = productRepository.One(p => p.ProductID == product.ProductID); 
       if (target != null) 
       { 
        target.ProductName = product.ProductName; 
        target.UnitPrice = product.UnitPrice; 
        target.UnitsInStock = product.UnitsInStock; 
        target.LastSupply = product.LastSupply; 
        target.Discontinued = product.Discontinued; 

        productRepository.Update(target); 
       } 
      } 
     } 
     if (deletedProducts != null) 
     { 
      foreach (var product in deletedProducts) 
      { 
       productRepository.Delete(product); 
      } 
     } 
     return View(new GridModel(productRepository.All())); 
    } 
} 

答えて

0

あなたは、実際にデータベースを更新しません。私たちのサンプルアプリケーションからのコードを使用しているように見えます。デモをブラウズしているすべてのユーザーが自分の変更のみを表示できるように、メモリ内のデータを更新するだけです。

データベースを更新する必要があります。実際の実装は、データアクセスに使用しているフレームワークによって異なります。例えば、Linq To SQLの場合、SubmitChangesメソッドを使用する必要があります。基礎データベースを更新するthisコードライブラリプロジェクトを確認することができます。

関連する問題