Razor 剃刀-可编辑网格-什么方法?

Razor 剃刀-可编辑网格-什么方法?,razor,grid,edit,Razor,Grid,Edit,我很好奇,也不知道该用什么。 所以我想要有一个网格并编辑它的行数据 我与MVC3 Razor合作,我知道这些可能性: -jqGrid剃须刀 -击倒网格剃须刀-我不知道如何使其可编辑网格?可能吗,或者这只是为了显示数据。 -网络网格 我不喜欢用遥控器! 请你告诉我什么是制作可编辑网格的最佳方法,如果我不需要可编辑网格怎么办?为什么要使用其中一种方法? 以及Razor页面中的所有内容。jqGrid确实支持编辑,您可以在中看到一些示例或阅读文档使用以下代码进行编辑,与添加、删除相同 对于视图 @(Ht

我很好奇,也不知道该用什么。 所以我想要有一个网格并编辑它的行数据

我与MVC3 Razor合作,我知道这些可能性: -jqGrid剃须刀 -击倒网格剃须刀-我不知道如何使其可编辑网格?可能吗,或者这只是为了显示数据。 -网络网格

我不喜欢用遥控器! 请你告诉我什么是制作可编辑网格的最佳方法,如果我不需要可编辑网格怎么办?为什么要使用其中一种方法?
以及Razor页面中的所有内容。

jqGrid确实支持编辑,您可以在中看到一些示例或阅读文档

使用以下代码进行编辑,与添加删除相同

对于视图

@(Html.Telerik().Grid<CustomerOrderDetails>()
                       .Name("gvCustomerOrderDetails")
                       .DataKeys(keys => keys.Add(k => k.ItemID))
                       .Columns(column =>
                       {
                           column.Bound(i => i.ItemID).Hidden(true);
                           column.Bound(i => i.SalesSequenceNumber).Hidden(true);
                           column.Bound(i => i.ItemSequence).Hidden(true);
                           column.Bound(i => i.ItemName).Title("Item Name").ReadOnly();
                           column.Bound(i => i.Quantity).Title("Order Quantity").HtmlAttributes(new { @class = "gridTextAlignRight" });
                           column.Bound(i => i.ItemUnitPrice).HtmlAttributes(new { @class = "gridTextAlignRight" }).ReadOnly();
                           column.Bound(i => i.ItemUnitPrice).Hidden(true);
                           column.Bound(i => i.TotalPrice).HtmlAttributes(new { @class = "gridTextAlignRight" }).ReadOnly();
                           column.Command(command =>
                           {
                               command.Edit().ButtonType(GridButtonType.Image);
                           }).Width(80).Title("Commands");
                       })
                       .Selectable()
                       .DataBinding(dbBindings =>
                           {
                               dbBindings.Ajax().Select("__CustomerOrderDetailsGridBind", "CustomerInfo")
                                                .Update("__CustomerOrderDetailsUpdate", "CustomerInfo");
                           })
                       .ClientEvents(events =>
                        events.OnDataBinding("onDataBinding")
                              .OnError("onError")
                       )
                       .Scrollable(scroll => scroll.Height(300))

                 )
@(Html.Telerik().Grid())
.Name(“gvCustomerOrderDetails”)
.DataKeys(keys=>keys.Add(k=>k.ItemID))
.列(列=>
{
column.Bound(i=>i.ItemID).Hidden(true);
column.Bound(i=>i.SalesSequenceNumber).Hidden(true);
column.Bound(i=>i.ItemSequence).Hidden(true);
column.Bound(i=>i.ItemName).Title(“项目名称”).ReadOnly();
column.Bound(i=>i.Quantity).Title(“订单数量”).HtmlAttributes(新的{@class=“gridTextAlignRight”});
column.Bound(i=>i.ItemUnitPrice).HtmlAttributes(新的{@class=“gridTextAlignRight”}).ReadOnly();
column.Bound(i=>i.ItemUnitPrice).Hidden(true);
column.Bound(i=>i.TotalPrice).HtmlAttributes(新的{@class=“gridTextAlignRight”}).ReadOnly();
Command(Command=>
{
command.Edit().ButtonType(GridButtonType.Image);
}).宽度(80)。标题(“命令”);
})
.可选()
.DataBinding(dbBindings=>
{
dbBindings.Ajax()。选择(“\uu CustomerOrderDetailsGridBind”,“CustomerInfo”)
.Update(“\uu CustomerOrderDetailsUpdate”,“CustomerInfo”);
})
.客户事件(事件=>
events.OnDataBinding(“OnDataBinding”)
.OnError(“OnError”)
)
.可滚动(滚动=>滚动高度(300))
)
对于控制使用以下代码

    [AcceptVerbs(HttpVerbs.Post)]
    [GridAction]
    public ActionResult __CustomerOrderDetailsUpdate(CustomerOrderDetails objCustomerOrderDetails)
    {
        SalesItem objSalesItem = new SalesItem();
        objSalesItem.SalesSequenceNumber = objCustomerOrderDetails.SalesSequenceNumber;
        objSalesItem.ItemSequence = Convert.ToByte(objCustomerOrderDetails.ItemSequence);
        objSalesItem.ItemID = objCustomerOrderDetails.ItemID;
        objSalesItem.Quantity = objCustomerOrderDetails.Quantity;
        objSalesItem.ItemUnitPrice = objCustomerOrderDetails.ItemUnitPrice;
        objSalesItem.TotalPrice = objCustomerOrderDetails.ItemUnitPrice * objCustomerOrderDetails.Quantity;
        objSalesItem.SalesDate = DateTime.Now;
        objSalesItem.EntryBy = objLoginHelper.LogInID;
        objSalesItem.EntryDate = DateTime.Now;

        customerDal.UpdateSalesItem(objSalesItem);

        return View(new GridModel<CustomerOrderDetails>
        {
            Data = customerDal.CustomerOrderDetailsInfo(objCustomerOrderDetails.SalesSequenceNumber, Helper.Active)
        });
    }
[AcceptVerbs(HttpVerbs.Post)]
[行动]
公共操作结果\u CustomerOrderDetailsUpdate(CustomerOrderDetails对象CustomerOrderDetails)
{
SalesItem objSalesItem=新SalesItem();
objSalesItem.SalesSequenceNumber=objCustomerOrderDetails.SalesSequenceNumber;
objSalesItem.ItemSequence=Convert.ToByte(objCustomerOrderDetails.ItemSequence);
objSalesItem.ItemID=objCustomerOrderDetails.ItemID;
objSalesItem.Quantity=objCustomerOrderDetails.Quantity;
objSalesItem.ItemUnitPrice=objCustomerOrderDetails.ItemUnitPrice;
objSalesItem.TotalPrice=objCustomerOrderDetails.ItemUnitPrice*objCustomerOrderDetails.Quantity;
objSalesItem.SalesDate=DateTime.Now;
objSalesItem.EntryBy=objLoginHelper.LogInID;
objSalesItem.EntryDate=DateTime.Now;
customerDal.UpdateSalesItem(objSalesItem);
返回视图(新GridModel)
{
Data=customerDal.CustomerOrderDetailsInfo(objCustomerOrderDetails.SalesSequenceNumber,Helper.Active)
});
}
您还可以将特定于模型的类用于添加、编辑和删除。此处ReadOnly()用于未编辑的列。如果需要控制中的列值,则使用不带ReadOnly()的同一列,只使用隐藏的列

我想大家都喜欢使用这段代码。

还支持许多编辑模式、场景,并将更新发送到本地或任何远程端点

在这里可以找到一个很好的开始示例:


谢谢你,弗拉德,是的。你觉得knockout.js怎么样?我可以看到它也可以做一些编辑,但我开始认为也许jqGrid是更好的方式?此外,Webgrid似乎仅用于可视化?@Diana我不太确定你是否应该将jqGrid和Knockout视为相互排斥;有关详细信息,请参阅。我个人还没有试过,但看起来不错。也许有人可以对此发表评论,或者你可以发布一个不同的问题。