C# Telerik MVC网格批量编辑

C# Telerik MVC网格批量编辑,c#,asp.net-mvc,asp.net-mvc-3,razor,telerik-grid,C#,Asp.net Mvc,Asp.net Mvc 3,Razor,Telerik Grid,为什么单击“保存”后,我的更改不会保留到数据库中 产品存储库: public class ProductRepository { NorthwindDataContext context = new NorthwindDataContext(); public IList<EditableProduct> All() { return (from product in context.Products sele

为什么单击“保存”后,我的更改不会保留到数据库中

产品存储库:

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

您似乎正在使用我们示例应用程序中的代码,该应用程序实际上不更新数据库。它只是更新内存中的数据,以便浏览演示的每个用户都只看到自己的更改

要使其工作,您需要更新数据库。实际实现取决于用于数据访问的框架。例如,对于Linq To SQL,您应该使用SubmitChanges方法。您可以检查更新基础数据库的代码库项目