JqG​​rid:在保存

时间:2015-04-22 13:26:31

标签: spring-mvc jqgrid

我们在项目中大量使用jqGrid。我们有这个非常独特的要求,我正在调查是否确实有任何特定用例的解决方案,并需要一些输入。

以下是该方案:

  1. jqGrid加载从服务器加载的数据(通过Spring)。
  2. 网格中的第一行允许您向网格添加新行(新添加的内容是在本地创建的,而不是持久保存到数据库中。)
  3. 每行都有一个内联保存和一个删除图标。单击内联保存图标时,网格数据将在本地保存(即更改不会反映到DB)。单击内联删除图标时,将在本地删除该行(更改将不会保留到数据库中)。
  4. 每行都是可拖动的,以便它们的位置可以互换(但是位置不会立即保存到数据库中)。
  5. 在jqGrid下面,我们有一个保存按钮,点击后会将所有网格数据发送到服务器。
  6. 上述用例真的有解决方案吗?即从数据库加载网格数据,然后在本地更改网格(添加/编辑/删除/重新排序)。最后将数据保存回数据库。

    如果可以有任何实例来实现这个用例,我真的很感激。

    干杯!

1 个答案:

答案 0 :(得分:0)

我意识到这是一个老问题。但它会使那些需要它的人受益。我相信已经很少有关于将全局数据网格处理到服务器的线程。我有同样的要求,不得不解决它。

我只在编辑模式下实现它而不使用内联功能。添加/删除功能通过刷新网格来处理,而不是在本地保存。

您需要在服务器上实现代码以处理整个数据网格,从客户端解析json数组数据。在我的例子中,逐行提取行数据并将其映射到服务器上的相应bean,将值映射到模型对象,以便您可以为每一行执行保存操作。

为了做到这一点,我添加一个名为"全部保存"的自定义按钮。向用户发送一条提醒消息,手动保存他或她修改的每一行,以便正确检索json数据网格值并将其发布到服务器。

下面是如何在客户端编写此类函数的示例,对于服务器,您需要编写自己的restful Web服务来处理保存操作。

async Task<IEnumerable<Product>> CreateProductsAsync(IEnumerable<IWorker> workers)
{
    var products = new List<product>();
    foreach (var worker in workers)
    {
        product = await worker.CreateProductAsync();
        products.Add(product);
    }

    return products;
}

希望它有所帮助!