Jqgrid не может добавлять, редактировать или удалять в моем экземпляре сервера SQL, и я не думаю, что это даже ударяет функцию добавления, редактирования или удаления - PullRequest
1 голос
/ 02 мая 2019

У меня проблемы с Free Jqgrid, из-за которой я не могу отправить его на свою версию Microsoft SQL Server для разработчиков.Я использую Microsoft Visual Studio.Я использую Entity Framework 6 для подключения к базе данных.Когда я использую точки останова, кажется, что они не попадают в мои ставки createbid, editbid или delete.Я также не получаю никаких ошибок в консоли.

Я просмотрел и сделал много учебников для редактирования обновления и добавления строк.У меня такая же проблема.Я не могу найти ответ, который работает на переполнение стека в моем исследовании.

Я опубликовал его в IIS, чтобы посмотреть, возможно ли это что-то с визуальными студиями, и посмотреть, если что-то изменится, но на этот раз я получил некоторые ошибки.Он не находит / Home / GetBidValues, Home / EditBid, / Home / CreateBid, / Home / DeleteBid.это странно, потому что в визуальных студиях они как минимум загружали данные в сетку и показывали их.Поэтому я рассмотрю этот вопрос далее и выясню, что-то не так с моим ajax, а также с моим кодом C #.

Вот мой файл Jquery

$(function () {
    $("#grid").jqGrid
        ({
            url: "/Home/GetBidValues",
            datatype: 'json',
            mtype: 'Get',  
            colNames: ['Client Cost', 'ElementId', 'Note', 'Area', 'Element', 'Item', 'Qty', 'Description'], //Othr Misc
            //colModel takes the data from controller and binds to grid   
            colModel: [
               {
                    key: true,
                    hidden: true,
                    name: 'ElementId',
                    index: 'ElementId',
                    frozen: true,
                    editable: false
                }, {
                    key: false,
                    name: 'Note',
                    index: 'Note',
                    frozen: true,
                    editable: true,
                    width: 70,
                    align: 'center'
                }, {
                    key: false,
                    name: 'Area',
                    index: 'Area',
                    frozen: true,
                    editable: true,
                    width: 70,
                    align: 'center'
                }, {
                    key: false,
                    name: 'Element',
                    index: 'Element',
                    frozen: true,
                    editable: true,
                    width: 70,
                    align: 'center'
                }, {
                    name: 'Item',
                    index: 'Item',
                    frozen: true,
                    editable: true,
                    width: 70,
                    align: 'center'
                }, {
                    key: false,
                    name: 'QTY',
                    index: 'QTY',
                    frozen: true,
                    editable: true,
                    width: 70,
                    align: 'center'
                }, {
                    key: false,
                    name: 'Description',
                    index: 'Description',
                    frozen: true,
                    editable: true,
                    width: 70,
                    align: 'center'
                }],

            pager: '#pager',
            gridview: true,
            ignoreCase: true,
            rowNumbers: false,
            shrinkToFit: false,
            height: '100%',
            width: 1000,
            viewrecords: true,
            footerrow: true,
            emptyrecords: 'No records to display',
            jsonReader:
            {
                root: "rows",
                page: "page",
                total: "total",
                records: "records",
                repeatitems: false,
                Id: "0"
            }

        });
        $('#grid').jqGrid( 'inlineNav','#pager', {
            edit: true,
            add: true,
            del: true,
            cancel: true,
            search: true,
            refresh: true,
            editparams: {
                keys:true
            }
        }, {
            // edit options  
            zIndex: 100,
                url: '/Home/EditBid',
                //datatype: 'json',
                //mtype: 'Post',
            closeOnEscape: true,
            closeAfterEdit: true,
            recreateForm: true,
            reloadaftersubmit: true,
            afterComplete: function (response) {
                if (response.responseText) {
                    alert(response.responseText);
                }
            }
        },{//add
            zIndex: 100,
                url: "/Home/CreateBid",
            closeOnEscape: true,
                closeAfterAdd: true,
                reloadaftersubmit: true,
            afterComplete: function (response) {
                if (response.responseText) {
                    alert(response.responseText);
                }
            }
        }, {
            // delete options  
            zIndex: 100,
                url: "/Home/DeleteBid",
            closeOnEscape: true,
            closeAfterDelete: true,
                recreateForm: true,
                reloadaftersubmit: true,
            msg: "Are you sure you want to delete this task?",
            afterComplete: function (response) {
                if (response.responseText) {
                    alert(response.responseText);
                }
            }
        });
});

Вот мой файл C #

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using ERPWebAppTest.Models;
using Microsoft.AspNet.Identity;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Owin;


namespace ERPWebAppTest.Controllers
{
    public class HomeController : Controller
    {       
        public ActionResult Index()
        {
            return View();
        }

        Test1Entities db = new Test1Entities();

        [HttpGet]
        public JsonResult GetBidValues(string sidx, string sord, int page, int rows) 
        {
            //old code
            int pageIndex = Convert.ToInt32(page) - 1;
            int pageSize = rows;
            var Results = db.BidDetails.Select(
                a => new
                {
                    a.ElementID,
                    a.Note ,
                    a.Area ,
                    a.Element ,
                    a.Item ,
                    a.QTY ,
                    a.Descr ,        
    });
            int totalRecords = Results.Count();
            var totalPages = (int)Math.Ceiling((float)totalRecords / (float)rows);
            if (sord.ToUpper() == "DESC")
            {
                Results = Results.OrderByDescending(s => s.ElementID);
                Results = Results.Skip(pageIndex * pageSize).Take(pageSize);
            }
            else
            {
                Results = Results.OrderBy(s => s.ElementID);
                Results = Results.Skip(pageIndex * pageSize).Take(pageSize);
            }
            var jsonData = new
            {
                total = totalPages,
                page,
                records = totalRecords,
                rows = Results
            };

            return Json(jsonData, JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public string CreateBid([Bind(Exclude = "ElementID")] BidDetail obj)
        {


            Test1Entities db = new Test1Entities();
            string msg;
            try
            {
                if (ModelState.IsValid)
                {
                    db.BidDetails.Add(obj);
                    db.SaveChanges();
                    msg = "Saved Successfully";
                }
                else
                {
                    msg = "Validation data not successfully";
                }
            }
            catch (Exception ex)
            {
                msg = "Error occured:" + ex.Message;
            }

            return msg;


        }
        [HttpPost]
        public string EditBid(BidDetail obj)
        {
            Test1Entities db = new Test1Entities();
            string msg;

            try
            {
                if (ModelState.IsValid)
                {
                    db.Entry(obj).State = EntityState.Modified;
                    db.SaveChanges();
                    msg = "Saved Successfully";
                }
                else
                {
                    msg = "Validation data not successfull";
                }
            }
            catch (Exception ex)
            {
                msg = "Error occured:" + ex.Message;
            }

            return msg;
        }


        [HttpPost]
        public string DeleteBid(int ElementID)
        {
            Test1Entities db = new Test1Entities();
            BidDetail list = db.BidDetails.Find(ElementID);
            db.BidDetails.Remove(list);
            db.SaveChanges();

            return "Deleted successfully";
        }
    }
}

1 Ответ

0 голосов
/ 14 июля 2019

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

  • Номера элементов colModel не совпадают с номерами элементов colNames. Сначала вы написали Client Cost в colNames, но в colModel вы этим не пользовались.
  • Вы также не вставили свой HTML-код, который требуется для указания jqgrid для загрузки на элемент таблицы. например: <table id="grid" class="table table-bordered"></table> <div id="pager"></div>
  • Я также предполагаю, что вы уже добавили скрипты free-jqgrid и файлы jquery-ui css.
  • Кроме того, в вашем коде c # вы можете удалить избыточность с помощью глобальной инициализации БД.

Я создал демонстрационную jqgrid, которую вы можете изменить в соответствии с вашими требованиями:

<div class="row">

<table id="grid" class="table table-bordered"></table>
<div id="pager"></div>
</div>

@section Scripts{
<script src="~/Scripts/bootstrap.min.js"></script>
<script src="~/Scripts/free-jqGrid/jquery.jqgrid.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("#grid").jqGrid
            ({
                url: "/Home/GetBidValues",
                datatype: 'json',
                mtype: 'Get',
                colNames: ['LanguageId', 'LanguageName', 'LanguageDescription', 'CreatedBy', 'CreatedOn'], //Othr Misc
                //colModel takes the data from controller and binds to grid
                colModel: [
                    //{ name: "act", template: "actions", align: "left", width: 58 },
                   {
                       key: true,
                       hidden: true,
                       name: 'LanguageId',
                       index: 'LanguageId',

                       editable: false
                   }, {
                       key: false,
                       name: 'LanguageName',
                       index: 'LanguageName',
                       frozen: true,
                       editable: true,

                       align: 'center'
                   }, {
                       key: false,
                       name: 'LanguageDescription',
                       index: 'LanguageDescription',

                       editable: true,

                       align: 'center'
                   }, {
                       key: false,
                       name: 'CreatedBy',
                       index: 'CreatedBy',

                       editable: true,

                       align: 'center'
                   }, {
                       name: 'CreatedOn',
                       index: 'CreatedOn',

                       editable: true,

                       align: 'center'
                   }],
                //cmTemplate: { editable: true, autoResizable: true },
                iconSet: "fontAwesome",
                rowNum: 10,
                //autoResizing: { compact: true },
                rowList: [5, 10, 20, "10000:All"],
                viewrecords: true,
                pager: jQuery('#pager'),
                toppager: false,
                inlineEditing: { keys: true, position: "afterSelected" },
                rownumbers: true,
                sortname: "invdate",
                sortorder: "desc",
                caption: "Demonstration of the usage custom action buttons",
                autowidth: true,
                shrinkToFit: false,
                jsonReader:
                {
                    root: "rows",
                    page: "page",
                    total: "total",
                    records: "records",
                    repeatitems: false,
                    Id: "LanguageId"
                }

            });
        jQuery("#grid").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: 
false, defaultSearch: "cn", multipleSearch: true, searchOperators: true, search: true 
});        //searchOnEnter: false means records are filtered as soon as the text is 
entered by the user
        jQuery("#grid").jqGrid('navGrid', '#pager', { add: true, edit: true, del: true, search: true, refresh: true,view:true }, {
            // edit options
            zIndex: 100,
            url: '/Home/EditBid',
            //datatype: 'json',
            //mtype: 'Post',
            closeOnEscape: true,
            closeAfterEdit: true,
            recreateForm: true,
            reloadaftersubmit: true,
            afterComplete: function (response) {
                if (response.responseText) {
                    alert(response.responseText);
                }
            }
        }, {//add
            zIndex: 100,
            url: "/Home/CreateBid",
            closeOnEscape: true,
            closeAfterAdd: true,
            reloadaftersubmit: true,
            afterComplete: function (response) {
                if (response.responseText) {
                    alert(response.responseText);
                }
            }
        }, {
            // delete options
            zIndex: 100,
            url: "/Home/DeleteBid",
            closeOnEscape: true,
            closeAfterDelete: true,
            recreateForm: true,
            reloadaftersubmit: true,
            msg: "Are you sure you want to delete this task?",
            afterComplete: function (response) {
                if (response.responseText) {
                    alert(response.responseText);
                }
            }
        });
    });
</script>

}
...