Как сохранить значения в базе данных с помощью KENDO GRID MVVM?

подскажите, пожалуйста, как сделать встроенную кнопку обновления и удаления? Вот мой HTML-код:

  <div id="example">

    <div data-role="grid"
         data-editable="true"
         data-toolbar="['create', 'save']"
         data-columns="[

          { 'field': 'Id', 'width': 100 },
                  { 'field': 'ShortName', 'width': 100 },
              { 'field': 'FullName', 'width': 100 },
           { 'field': 'ContactPerson', 'width': 100 },
           { 'field': 'Adress1', 'width': 100 },
           { 'field': 'CompanyCity', 'width': 100 },
              { 'field': 'CompanyCountry', 'width': 100 },
              { 'field': 'ZipPostCode', 'width': 100 },
          { 'field': 'TelArea', 'width': 100 },

         ]"
         data-bind="source: products,
                        visible: isVisible,
                        events: {
                         save: onSave
                        }"
         style=" height: 400px"></div>


</div>

Он успешно отображает данные, используя транспортное чтение:

  document.onreadystatechange= function () {

var viewModel = kendo.observable({
    isVisible: true,
    onSave: function (e) {

        },
        products: new kendo.data.DataSource({
            schema: {
                model: {
                    Id: "Id",
                    fields: {
                        Id: { type: "int" },
                        ShortName: { type: "string" },
                        FullName: { type: "string" },
                        ContactPerson: { type: "string" },
                        CompanyCity: { type: "string" },
                        CompanyCountry: { type: "string" },
                        ZipPostCode: { type: "string" },
                        TelArea: { type: "string" }

                    }
                }
            },
            batch: true,
            transport: {
                read: {
                    url: "/api/Companies/GetAllCompanies",
                    dataType: "json"
                },

                //update: {
                //    url: "http://demos.telerik.com/kendo-ui/service/products/update",
                //    dataType: "jsonp"
                //},
                create: {
         //HOW TO PERFOM CREATE BY INLINE BUTTON OR ALSO HOW TO STORE VALUES
           },
                parameterMap: function (options, operation) {
                    if (operation !== "read" && options.models) {
                        return { models: kendo.stringify(options.models)      };
                    }
                }
            }
        })
    });
kendo.bind(document.getElementById("example"), viewModel);
        }

вот мой код контроллера контроллера сохранения

   [HttpPost]
       public void SaveDefCompny(DefCompanyDTO DfCmpny1)
    {
        DefCompany dfcmpny2 = new DefCompany();
        RPDBEntities db = new RPDBEntities();
        db.DefCompanies.Add(DfCmpny1);
        dfcmpny2.saveDefCompany();
    }

Скажите, как сделать, чтобы значения сетки сохранялись в базу данных с помощью встроенной кнопки сохранения, и он создавал массив значений сетки и сохранял его в базе данных, вызывая контроллер [post]?


person Community    schedule 22.05.2015    source источник


Ответы (1)


Сначала вам нужно установить editMode на встроенный и добавить командный столбец для кнопки редактирования и удаления.

<div id="example">

    <div data-role="grid"
         data-editable="inline"
         data-columns="[

          { 'field': 'Id', 'width': 100 },
          { 'field': 'ShortName', 'width': 100 },
          { 'field': 'FullName', 'width': 100 },
          { 'field': 'ContactPerson', 'width': 100 },
          { 'field': 'Adress1', 'width': 100 },
          { 'field': 'CompanyCity', 'width': 100 },
          { 'field': 'CompanyCountry', 'width': 100 },
          { 'field': 'ZipPostCode', 'width': 100 },
          { 'field': 'TelArea', 'width': 100 },
          { command: ['edit', 'destroy'], title: '&nbsp;', width: '250px' }],           

         ]"
         data-bind="source: products"
         style="height: 400px"></div>
</div>

Затем укажите URL-адрес для запросов на обновление и уничтожение и измените пакетный режим на false, потому что вы отправляете один объект только после редактирования. Карта параметров теперь отправляет только отредактированную строку.

document.onreadystatechange= function () {

var viewModel = kendo.observable({
        products: new kendo.data.DataSource({
            schema: {
                model: {
                    Id: "Id",
                    fields: {
                        Id: { type: "int" },
                        ShortName: { type: "string" },
                        FullName: { type: "string" },
                        ContactPerson: { type: "string" },
                        CompanyCity: { type: "string" },
                        CompanyCountry: { type: "string" },
                        ZipPostCode: { type: "string" },
                        TelArea: { type: "string" }

                    }
                }
            },
            batch: false,
            transport: {
                read: {
                    url: "/api/Companies/GetAllCompanies",
                    dataType: "json"
                },
                update: {
                   url: "/api/Companies/Update", // here you need correct api url
                   dataType: "jsonp"
                },
                destroy: {
                    url: "/api/Companies/Delete", // here you need correct api url
                    dataType: "jsonp"
                },
                parameterMap: function (data, operation) {
                    if (operation !== "read" && data) {
                        return { kendo.stringify(data) };
                    }
                }
            }
        })
    });
    
  kendo.bind($("#example"), viewModel);

}

person Jarno Lahtinen    schedule 22.05.2015
comment
могу ли я таким же образом выполнить удаление - person ; 22.05.2015
comment
проблема заключается в том, что элемент управления встроенной кнопкой при нажатии не может перейти к обновлению или уничтожению, который я отлаживал много раз .... какой идентификатор в html-коде я даю кнопке команд, которую вы добавили. ошибка не может прочитать данные свойства - person ; 22.05.2015
comment
Не удается прочитать свойство «данные» неопределенного ПОМОГИТЕ ПРИ обновлении или сохранении - person ; 22.05.2015