在 syncfusion "false column" MVC 中为 Grid 创建一个在数据库中没有记录的列

Create a column without no record in the database for a Grid in syncfusion "false column" MVC

我正在从查询多个表的视图生成网格。我需要添加一个列,用户可以通过输入一个数量来编辑该列,以便该行可以保存为几个表中的新记录。这就是为什么在数据库中没有真正生成该列的原因,因为实际上没有包含该数量的记录。

@(Html.EJ().Grid<object>("ITEMS_PRESUPUESTOGrid")
    .Datasource(ds => ds.URL("GetOrderData_VISTA_ITEMS_PRESUPUESTO_ACTIVO").Adaptor(AdaptorType.UrlAdaptor))
    //.AllowScrolling()
    //.ScrollSettings(col => { col.Width(520).Height(300).EnableVirtualization(true); })
    .AllowPaging()
    .AllowFiltering()
    .QueryString("COD_SUBCAPITULO")
    .Locale("es-CO")
    .AllowResizeToFit(true)
    .AllowResizing(false)
    .AllowMultiSorting()
    .AllowSorting()
    .PageSettings(page => page.PageSize(7))
    .ClientSideEvents(eve => eve.ToolbarClick("clickedderecha"))
    .FilterSettings(filter => { filter.FilterType(FilterType.Excel); })
    .EditSettings(edit => { edit.AllowAdding().AllowDeleting().AllowEditing().EditMode(EditMode.Normal); })
    .ClientSideEvents(e => e.Load("load_VISTA_ITEMS_PRESUPUESTO_ACTIVOGrid").Create("create_grid_ITEMS_PRESUPUESTOGrid").ActionBegin("inicio").ActionBegin("inicio_grid_VISTA_ITEMS_PRESUPUESTO_SIN_CONTRATOGrid").Create("create_grid_VISTA_ITEMS_PRESUPUESTO_SIN_CONTRATOGrid"))
    .ToolbarSettings(toolbar =>
    {
        toolbar.ShowToolbar().ToolbarItems(items =>
        {
            items.AddTool(ToolBarItems.Search);
        });
    }).Columns(col =>
    {
        
        col.Field("COD_ITEM").HeaderText("CÓDIGO").IsPrimaryKey(true).Visible(true).Add();
        col.Field("NOMBRE").HeaderText("NOMBRE").Add();
        col.Field("CANTIDAD").HeaderText("C. PRESU.").Add();
        col.HeaderText("C. A REG").EditType(EditingType.NumericEdit).Add();
})

编辑模板(客户端)中的数据 我正在尝试:.EditSettings(edit => { edit.AllowAdding().AllowDeleting().AllowEditing().EditMode(EditMode.Normal); }) 但我不知道如何查看这些更改。 enter image description here 编辑后不会保存输入的值。

参考栏是最后一栏。这时候,首先它没有取默认值,也没有保存我在编辑列时输入的值。 我还没有创建将数据保存在数据库中的功能,因为首先我想修改模板中的数据。

这是数据库视图的代码:


CREATE VIEW [dbo].[VISTA_ITEMS_PRESUPUESTO_ACTIVO]
AS
SELECT        
dbo.ITEMS_PRESUPUESTO.COD_ITEM, 
dbo.ITEMS_PRESUPUESTO.NOMBRE, dbo.ITEMS_PRESUPUESTO.CANTIDAD,
dbo.PRESUPUESTOS_ITEM_PRESUPUESTO.COD_PRESUPUESTO_ITEM_PRESUPUESTO, 
dbo.PRESUPUESTOS_ITEM_PRESUPUESTO.COD_PRESUPUESTO, 
dbo.PRESUPUESTOS.COD_PROYECTO, 
0 AS CANTIDAD_ACTIVIDAD
FROM            
dbo.ITEMS_PRESUPUESTO INNER JOIN
dbo.PRESUPUESTOS_ITEM_PRESUPUESTO ON dbo.ITEMS_PRESUPUESTO.COD_ITEM = dbo.PRESUPUESTOS_ITEM_PRESUPUESTO.COD_ITEM 
INNER JOIN
dbo.PRESUPUESTOS ON dbo.PRESUPUESTOS_ITEM_PRESUPUESTO.COD_PRESUPUESTO = dbo.PRESUPUESTOS.COD_PRESUPUESTO 
INNER JOIN
dbo.PROGRAMAS ON dbo.PROGRAMAS.COD_PROYECTO = dbo.PRESUPUESTOS.COD_PROYECTO
WHERE        (dbo.ITEMS_PRESUPUESTO.COD_ESTADO_ITEM_PRESUPUESTO = 1) AND (dbo.PRESUPUESTOS.COD_ESTADO_PRESUPUESTO = 5)

这是控制器:

public ActionResult GetOrderData_VISTA_ITEMS_PRESUPUESTO_ACTIVO(DataManager dm)
        {
            IEnumerable DataSource = db.VISTA_ITEMS_PRESUPUESTO_ACTIVO.ToList();
            DataOperations ds = new DataOperations();
            List<string> str = new List<string>();
            db.Configuration.ProxyCreationEnabled = false;
            db.Configuration.LazyLoadingEnabled = false;
            return Json(new { result = DataSource }, JsonRequestBehavior.AllowGet);
        }

如果有人能帮助我,我非常感谢

强文本

我在官方文档中找到了解决方法

}).Columns(col => {    
col.Type("checkbox").HeaderText("").Field("").Width("60").AllowFiltering(false).AllowSorting(false).Add();
col.Field("COD_ITEM").HeaderText("CÓDIGO").IsPrimaryKey(true).Visible(false).col.Field("NOMBRE").HeaderText("NOMBRE").Add();
col.Field("CANTIDAD").HeaderText("C. DISPONIBLE").Add();
col.HeaderText("C. ADD").Template("<input value=0 />").Add();

我添加了两个可编辑字段,检查一个和一个输入,我分享链接以扩展信息: https://help.syncfusion.com/aspnetmvc/grid/columns?cs-save-lang=1&cs-lang=razor https://help.syncfusion.com/aspnetmvc/grid/editing?_ga=2.162224380.1153013492.1605824141-52632355.1601061767#default-column-values-on-add-new

根据您的示例,最后一列没有字段属性。所以最后一列显示空值。根据您的查询,您正在使用 Multiple table 生成网格。所以我们建议您使用外键列。请参考以下代码片段:

您的代码:

 col.Field("NOMBRE").HeaderText("NOMBRE").Add(); 
col.Field("CANTIDAD").HeaderText("C. PRESU.").Add(); 
 col.HeaderText("C. A REG").EditType(EditingType.NumericEdit).Add();
.
 

修改后的代码:

col.Field("OrderID").HeaderText("CÓDIGO").IsPrimaryKey(true).TextAlign(TextAlign.Right).Width(75).Add();        col.Field("Freight").HeaderText("NOMBRE").TextAlign(TextAlign.Right).EditType(EditingType.NumericEdit).Width(75).Format("{0:C}").Add(); 
col.Field("ShipCity").HeaderText("C. PRESU.").Width(80).Add(); 
col.Field("EmployeeID").HeaderText("C. A REG").ForeignKeyField("EmployeeID").ForeignKeyValue("FirstName").DataSource(ViewBag.data).TextAlign(TextAlign.Right).Width(90).Add();
 

请参考以下帮助文档: https://help.syncfusion.com/aspnetmvc/grid/columns#foreign-key-column

修改示例请参考: https://www.syncfusion.com/downloads/support/directtrac/304148/ze/Grid-sample-627225723