#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