Как получить идентификатор элемента, добавленного в новую строку, выбранную по выпадающему меню предыдущей ячейки, используя jquery - PullRequest
1 голос
/ 03 октября 2019
function GetRow() {
            var tBody = $("#table > TBODY")[0];

            var row = tBody.insertRow(-1);

            row.className += "OrderItems";

            var selectProduct = $("#ProductList").find('option:selected').text();
            if (selectProduct == 'Select Item')
            {
                $('#ProductList').after('<span class="error" style="color:red">This field is required</span>');
            }
            else {
                var cell = $(row.insertCell(-1));
                cell.append(selectProduct.val($('#ProductList').val()));

                var priceOfProduct = $("#UnitPrice").val();
                var cell = $(row.insertCell(-1));
                cell.append(priceOfProduct);

                var quantity = $("#Quantity").val();
                if (!quantity)
                {
                    var cell = $(row.insertCell(-1));
                    cell.html(0);
                }
                else {
                    var cell = $(row.insertCell(-1));
                    cell.append(quantity);
                }

                var extendedAmount = $("#ExtendedAmount").val();
                var cell = $(row.insertCell(-1));
                cell.append(extendedAmount);

                cell = $(row.insertCell(-1));
                var button = $("<input />").attr("type", "button").attr("value", "Remove").attr("class", "btn btn-default");
                button.attr("onclick", "RemoveRow(this)");
                cell.append(button);

Здесь я добавляю динамические строки с копированием данных, добавленных в предыдущую строку, и эта строка добавляется после нажатия кнопки Добавить

function SubmitOrder() {
                var OrderItem = new Array();
                $("#table TBODY TR.OrderItems").each(function () {
                    var row = $(this);
                    var orders = {};
                    debugger;
                    orders.ProductId = row.find('td:eq(0)').find("input").val();//Fix it
                    orders.UnitPrice = row.find('td:eq(1)').text();
                    orders.Quantity = row.find('td:eq(2)').text();
                    orders.ExtendedAmount = row.find('td:eq(3)').text();
                    OrderItem.push(orders);
                });
                debugger;
                var order = {
                    "OrderDeliveryDate": $("#OrderDeliveryDate").val(),
                    "SpecialNotes": $("#SpecialNotes").val(),
                    "OrderItem":OrderItem
                }
                console.log(order);

                $.ajax({
                    type: "POST",
                    url: "/Orders/SubmitOrder",
                    data: order,
                    success: function (data) {
                        alert(data);
                    }
                });

Здесь я делаю массив OrderItems и с этим массивом я хочупередать OrderDeliveryDate и Special Notes, и мне нужно передать эти данные через объект json в контроллер. Здесь я получаю не редактируемый текст в новой строке таблицы, и из добавленных ячеек строки я пытаюсь получить данные и передать их модели, но здесь я получаю только текст из ячеек строки, так как мне нужен productId вместо productимя. Я хочу показать название продукта в новой добавленной ячейке продукта, но хочу передать идентификатор продукта контроллеру

 public class OrderItem
{
    public int ProductId { get; set; }
    public decimal UnitPrice { get; set; }
    public int Quantity { get; set; }
    public decimal ExtendedAmount { get; set; }
}
public class OrderViewModel
{

    public int OrderId { get; set; }

    [Display(Name = "Select Product")]
    public IEnumerable<SelectListItem> ProductsList { get; set; }

    [DataType(DataType.Date)]
    [Display(Name ="Date")]
    [DisplayFormat(DataFormatString ="{0:mm/sdd/yyyy}")]
    public DateTime? OrderDeliveryDate { get; set; }

    public DateTime? OrderDate { get; set; }

    [StringLength(250, ErrorMessage = "This field can contain 250 characters")]
    [Display(Name ="Special Notes")]
    public string SpecialNotes { get; set; }

    public List<OrderItem> OrderItem { get; set; }

    public int? CustomerID { get; set; }

    public decimal? OrderTotal { get; set; }

    public int StatusID { get; set; }
}}

Это моя модель

 [This is the picture of UI of Create Order][1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...