gpt4 book ai didi

c# - 如何在保存到存储库之前将临时数据添加到 Telerik MVC 网格?

转载 作者:行者123 更新时间:2023-11-30 17:51:10 25 4
gpt4 key购买 nike

前段时间我使用 Devexpress 组件开发了一个 asp.net webforms 应用程序,在 aspxgridview 中,我可以只使用客户端在我的网格中插入行,而不是将它保存在我的数据库中。在用户插入他需要的所有行后,用户按下“发送”按钮,然后我将所有数据发送到我的服务器端保存在 Db 中。

现在在我的 MVC Telerik 网格中,我不知道如何做同样的事情。这是我的观点:

  @(Html.Telerik()
.Grid( Model )
.Name( "DocumentGrid" )
.DataKeys(a => a.Add(b=> b.IDDocument))
.ToolBar(commands => { commands.Insert().Text("add"); })
.Columns(c =>
{
c.Bound(column => column.SupplierIdentification).Title("CNPJ/CPF");
c.Bound(column => column.StatusDescription).Title("Status");
c.Bound(column => column.ExpirationDate).Title("Vencimento");
c.Bound(column => column.IsStock).Title("Estoque");)
.DataBinding(x =>
x.Server().Insert("InsertNewDocument","Client"))
.Editable(a => a.Mode(GridEditMode.InForm).TemplateName("AddDocumentModel")).ClientEvents(x => x.OnSave("onSave")))

如您所见,我有一个 Insert 以我的模型作为参数调用一个 Action ,但我想在我完成向网格添加行时“触发”该 Action 。

这是放置在自定义编辑模板上的 JavaScript 按钮:

<a href="javascript:void(0);" onclick="OnUpdateClick(this)"><b>Confirm</b>

此按钮应调用 OnUpdateClick 函数,该函数将临时行插入到我的网格中。

function OnUpdateClick() {
var grid = $("#DocumentGrid").data("tGrid");
var item = {};
grid.insertRow(item);
}

我猜应该是这样的。有什么建议吗?

编辑:

当我编辑我的网格时,我从 ~/Shared/EditorTemplates 文件夹中获取编辑模板,是否可以从 EditorTemplate 文件夹中的脚本获取我的网格数据?

最佳答案

为什么不使用 Ajax 数据绑定(bind)和网格操作模式作为客户端来简化它。

这就是我在项目中所做的,所以我基本上可以在客户端批量更新和批量添加项目,它只在保存时上传到服务器。应该是这样的。

@(Html.Telerik().Grid<YourViewModel>()
.Name("DocumentGrid")
.Columns(c =>
{
c.Bound(column => column.SupplierIdentification).Title("CNPJ/CPF");
c.Bound(column => column.StatusDescription).Title("Status");
c.Bound(column => column.ExpirationDate).Title("Vencimento");
c.Bound(column => column.IsStock).Title("Estoque");
c.Bound(a => a.IDDocument).Hidden()
})
.DataBinding(d =>
d.Ajax()
.OperationMode(GridOperationMode.Client)
.Select("SelectAction", "YourController")
.Update("UpdateAction", "YourController")
.Insert("InsertAction", "YourController")
.Delete("DeleteAction", "YourController")
)
.Pageable(p => p.PageSize(50))
.Sortable()
.Scrollable()
.Groupable()
.Filterable()
.KeyboardNavigation()
.Resizable(r => r.Columns(true))
.Reorderable(r => r.Columns(true))
.Editable(e =>
e.Mode(GridEditMode.InCell)
.DataKeys(k => k.Add(a => a.IDDocument))
.ToolBar(c =>
{
c.Insert();
c.SubmitChanges();
})
)
)

你的 Action 看起来像这样

[HttpPost]
[GridAction]
public ActionResult UpdateAction([Bind(Prefix = "updated")]IEnumerable<YourViewModel> updatedTransactions)
{
...
}

[HttpPost]
[GridAction]
public ActionResult InsertAction([Bind(Prefix = "inserted")]IEnumerable<YourViewModel> insertedTransactions)
{
...
}

[HttpPost]
[GridAction]
public ActionResult DeleteAction([Bind(Prefix = "deleted")]IEnumerable<YourViewModel> deletedTransactions)
{
...
}

关于c# - 如何在保存到存储库之前将临时数据添加到 Telerik MVC 网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19866944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com