2011-09-16 9 views
0

저장을 클릭하면 왜 내 변경 사항이 db로 유지되지 않습니다.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 코드 라이브러리 프로젝트를 확인할 수 있습니다.

관련 문제