Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 剑道网格单元编辑_C#_Asp.net Mvc_Kendo Ui_Telerik - Fatal编程技术网

C# 剑道网格单元编辑

C# 剑道网格单元编辑,c#,asp.net-mvc,kendo-ui,telerik,C#,Asp.net Mvc,Kendo Ui,Telerik,我想手动编辑一个单元格,并根据输入的数据自动显示另一个单元格上的内容 例如: 如果数量发生变化,则应计算总量(价格*数量),并在“总量”列上显示结果 可以使用剑道格网吗?感谢您的帮助。是的,这是可能的。如果你搜索“肯杜伊网格计算字段”,你可以在网上找到一些信息 解决方案取决于您选择的编辑模式类型(“内联”、“插入”或“弹出”)。由于我在您的网格中没有看到任何带有触发编辑按钮的列,因此我知道您正在编辑incell。然后,解决方案是截取save事件并以此计算字段 让您的数据源定义为: var ds

我想手动编辑一个单元格,并根据输入的数据自动显示另一个单元格上的内容

例如: 如果数量发生变化,则应计算总量(价格*数量),并在“总量”列上显示结果


可以使用剑道格网吗?感谢您的帮助。

是的,这是可能的。如果你搜索“肯杜伊网格计算字段”,你可以在网上找到一些信息

解决方案取决于您选择的编辑模式类型(“内联”、“插入”或“弹出”)。由于我在您的网格中没有看到任何带有触发编辑按钮的列,因此我知道您正在编辑
incell
。然后,解决方案是截取
save
事件并以此计算字段

让您的
数据源定义为:

var ds = {
    data    : [
        { Id: 1, ItemName: "Galaxy", Price: "25000", Qty: 2, Total: 50000 },
        { Id: 1, ItemName: "Lumia", Price: "18000", Qty: 1, Total: 18000 },
        { Id: 1, ItemName: "Experia", Price: "10000", Qty: 3, Total: 30000 } 
    ],
    schema  : {
        model: {
            id : "Id",
            fields: {
                Id       : { type: 'number' },
                ItemName : { type: 'string' },
                Price    : { type: 'number' },
                Qty      : { type: 'number' },
                Total    : { type: 'number', editable: false }
            }
        }
    }
};
那么你的网格应该是这样的:

var grid = $("#grid").kendoGrid({
    dataSource: ds,
    editable  : "incell",
    pageable  : false,
    columns   :
    [
        { field: "ItemName", title: "Item Name" },
        { field: "Price", title: "Price" },
        { field: "Qty", title: "Qty" },
        { field: "Total", title: "Total" }
    ]
}).data("kendoGrid");
您需要添加到
网格
定义中的是
save
事件处理程序,该处理程序使用
e.values
(其中
e
save
接收的事件信息)检查哪个字段已更改,并计算新的
总计
,然后使用模型上的
set
方法进行设置

    save : function (e) {
        if (e.values && (e.values.Qty || e.values.Price)) {
            var qty = e.values.Qty || e.model.Qty;
            var price = e.values.Price || e.model.Price;
            e.model.set("Total", price * qty);
        }
    }

这里的示例:

如果您使用剑道MVC,则与使用剑道MVC的方式相同:

 @(Html.Kendo().Grid<Model>()
                  .Columns(columns =>
                  {
                      columns.Bound(p => p.ItemName);
                      columns.Bound(p => p.Qty);
                      columns.Bound(p => p.Price);
                      columns.Bound(p => p.Total);

                      columns.Command(command =>
                      {
                          command.Edit();
                      })

                  })
                  .Editable(editable => editable.Mode(GridEditMode.InLine))

                  .DataSource(dataSource => dataSource 
                      .Ajax()
                      .Model(model =>
                      {
                          model.Id(x => x.ExchangeRateId);
                          model.Field(x => x.Total).Editable(false);

                      })
                      .Read(read => read.Action("Read", "Products"))
                      .Update(update => update.Action("Update", "Products"))
                 )
            )
@(Html.Kendo().Grid())
.列(列=>
{
columns.Bound(p=>p.ItemName);
绑定列(p=>p.Qty);
绑定列(p=>p.Price);
columns.Bound(p=>p.Total);
columns.Command(Command=>
{
command.Edit();
})
})
.Editable(可编辑=>Editable.Mode(GridEditMode.InLine))
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>
{
model.Id(x=>x.ExchangeRateId);
model.Field(x=>x.Total).可编辑(false);
})
.Read(Read=>Read.Action(“Read”,“Products”))
.Update(Update=>Update.Action(“更新”、“产品”))
)
)
在您的控制器中,如下所示:

public class Productscontroller {
public ActionResult Read([DataSourceRequest]DataSourceRequest request)
        {
        var products = proxy.GetProducts();

        DataSourceResult result = products.ToDataSourceResult(request, ProductsModel => new ProductsModel()
        {
            id = products.id,
            ItemName= products.ItemName,
            Qty= products.Qty,
            Price = products.Price,
            total = products.Qty * products.Price
        });
        return Json(result, JsonRequestBehavior.AllowGet);
    }
public ActionResult Update([DataSourceRequest]DataSourceRequest request, ProductsModel product)
        {
        var products = proxy.GetProductById(product.Id);

        Proxy<Products>.Update(products);
    }
}
公共类产品控制器{
公共操作结果读取([DataSourceRequest]DataSourceRequest请求)
{
var products=proxy.GetProducts();
DataSourceResult result=products.ToDataSourceResult(请求,ProductsModel=>newproductsModel()
{
id=products.id,
ItemName=products.ItemName,
数量=产品数量,
价格=产品。价格,
总计=产品数量*产品价格
});
返回Json(结果,JsonRequestBehavior.AllowGet);
}
公共操作结果更新([DataSourceRequest]DataSourceRequest请求,ProductsModel产品)
{
var products=proxy.GetProductById(product.Id);
代理更新(产品);
}
}
希望这有帮助