Создание столбца без записи в базе данных для сетки в syncfusion «ложный столбец» MVC

#asp.net-mvc #blazor #syncfusion

#asp.net-mvc #blazor #syncfusion

Вопрос:

Я создаю сетку из представления, запрашивающего несколько таблиц. Мне нужно добавить столбец, который будет редактироваться пользователем путем ввода суммы, чтобы строка могла сохраняться как новая запись в нескольких таблицах. Вот почему столбец на самом деле не создается в базе данных, поскольку на самом деле нет записи, содержащей эту сумму.

 @(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); }) но я не знаю, как отразить эти изменения. введите описание изображения здесь после редактирования, не сохраняя введенное значение.

Указанный столбец является последним. На данный момент сначала он не принимает значение по умолчанию и не сохраняет значение, которое я ввожу при редактировании столбца. Я еще не создал функцию для сохранения данных в базе данных, потому что сначала я хочу изменить данные в шаблоне.

Это код для представления базы данных:

 
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);
        }
 

если кто-то может мне помочь, я очень благодарен

Комментарии:

1. Этот вопрос не очень понятен. Можете ли вы добавить дополнительную информацию о том, как вы редактируете значения, как вы отправляете их в базу данных (этот код) и как вы пытаетесь сохранить записи?

2. Готово, уже добавлено больше информации, спасибо за предложение

Ответ №1:

сильный текст

Я нашел решение в официальной документации

 }).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=1amp;cs-lang=razor
https://help.syncfusion.com/aspnetmvc/grid/editing?_ga=2.162224380.1153013492.1605824141-52632355.1601061767#default-column-values-on-add-new

Ответ №2:

Основываясь на вашем примере, последний столбец не имеет свойств поля. Таким образом, в последнем столбце отображается пустое значение. На основе вашего запроса вы используете несколько таблиц для создания сетки. Поэтому мы предлагаем вам использовать столбец внешнего ключа. Пожалуйста, обратитесь к приведенному ниже фрагменту кода:

Ваш код:

  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