MVC中的子项加载/选项的淘汰子项

宝马车队

我在将子级加载到我的选项列表时遇到问题。我创建了订单,但无法编辑。它不会加载下拉列表。我的目标是在订单上按“编辑”。

它将在订单项的下拉列表中选择当前产品。我想将“产品模型”中的价格放到视图中(从下拉列表中选择商品时)

还有其他方法可以填充下拉列表吗?

我将上传图片。

这是我的代码javascript代码。

var Products = [];
//fetch categories from database
function LoadProducts(element) {
if (Products.length == 0) {
    //ajax function for fetch data
    $.ajax({
        type: "GET",
        url: '/Sales/GetProducts',
        success: function (data) {
            Products = data;
            //render catagory

            renderProducts(element);

        }
    })
}
else {
    alert("else");
    //render catagory to the element
    renderProducts(element);
}
}

function renderProducts(element) {
var $ele = $(element);
$ele.empty();
$ele.append($('<option/>').val('0').text('Select'));
$.each(Products, function (i, val) {
    $ele.append($('<option/>').val(val.ProductId).text(val.ProductName));
})
}


var Seats = [];
//fetch categories from database
function LoadSeats(element) {
if (Seats.length == 0) {
    //ajax function for fetch data
    $.ajax({
        type: "GET",
        url: '/Sales/GetSeats',
        success: function (data) {
            Seats = data;
            //render catagory
            renderSeats(element);
        }
    })
}
else {
    //render catagory to the element
    renderSeats(element);
}
}

function renderSeats(element) {
var $ele = $(element);
$ele.empty();
$ele.append($('<option/>').val('0').text('Select'));
$.each(Seats, function (i, val) {
    $ele.append($('<option/>').val(val.SeatId).text(val.SeatPlace));
})
}


var Employees = [];
//fetch categories from database
function LoadEmployees(element) {
if (Employees.length == 0) {
    //ajax function for fetch data
    $.ajax({
        type: "GET",
        url: '/Sales/GetEmployees',
        success: function (data) {
            Employees = data;
            //render catagory
            renderEmployees(element);
        }
    })
}
else {
    //render catagory to the element
    renderEmployees(element);
}
}

function renderEmployees(element) {
var $ele = $(element);
$ele.empty();
$ele.append($('<option/>').val('0').text('Select'));
$.each(Employees, function (i, val) {
    $ele.append($('<option/>').val(val.EmployeeId).text(val.EmployeeName));
})
}


var PaymentMethods = [];
//fetch categories from database
function LoadPaymentMethods(element) {
if (PaymentMethods.length == 0) {
    //ajax function for fetch data
    $.ajax({
        type: "GET",
        url: '/Sales/GetPaymentMethods',
        success: function (data) {
            PaymentMethods = data;
            //render catagory
            renderPaymentMethods(element);
        }
    })
}
else {
    //render catagory to the element
    renderPaymentMethods(element);
}
}

function renderPaymentMethods(element) {
var $ele = $(element);
$ele.empty();
$ele.append($('<option/>').val('0').text('Select'));
$.each
(PaymentMethods, function (i, val) {                           
 $ele.append
($('<option/>')
.val(val.PaymentMethodId)
.text(val.PaymentMethodType));
})
}




var ObjectState = {
Unchanged: 0,
Added: 1,
Modified: 2,
Deleted: 3
};


LoadProducts($('#productCategory'));

var salesOrderItemMapping = {    
'SalesOrderItems': {
    key: function (salesOrderItem) {
       // alert("Salesorderitem mapping key");
        return ko.utils.unwrapObservable(salesOrderItem.SalesOrderItemId);
    },
    create: function (options) {
        console.log(options);
        return new SalesOrderItemViewModel(options.data);            
    }      
}
};


//var productItemMapping = {
//    'Products': {
//        key: function(product) {
//            return ko.utils.unwrapObservable(product.ProductId);
//        },
//        create: function(options) {
//            return new SalesOrderViewModel(options.data);
 //        }
 //    }
 //};
 //    ko.mapping.fromJS(data, productItemMapping, SalesOrderViewModel);

SalesOrderItemViewModel = function (data) {
//alert("salesorder item view"); // funkade
var self = this;
ko.mapping.fromJS(data, salesOrderItemMapping, self);
//dd: ko.observableArray(Products);
self.itemss = ko.observableArray(Products);
self.selectedItem = ko.observable(Products.ProductId);

//self.product1 = ko.observableArray(Products());

//self.dd = ko.observableArray(function() {
//    //data.ProductId = data.Products.ProductId;
//    return self.Products();
//});

self.flagSalesOrderAsEdited = function() {
    if (self.ObjectState() !== ObjectState.Added) {
        self.ObjectState(ObjectState.Modified);
    }
   // alert("salesorder item view if");
    return true;
};
};


SalesOrderViewModel = function (data) {
var self = this;
ko.mapping.fromJS(data, salesOrderItemMapping, self);
//alert("salesorder view model"); // funkade

self.save = function () {
    $.ajax({
        url: "/Sales/Save/",
        type: "POST",
        data: ko.toJSON(self),
        contentType: "application/json",
        success: function (data) {
            if (data.salesOrderViewModel !== null)
                ko.mapping.fromJS(data.salesOrderViewModel, {}, self);

            if (data.newLocation !== null)
                window.location = data.newLocation;
        }
    });
},

self.flagSalesOrderAsEdited = function () {
    if (self.ObjectState() !== ObjectState.Added) {
        self.ObjectState(ObjectState.Modified);
    }
    return true;
},



self.deleteSalesOrderItem = function(salesOrderItem) {
    self.SalesOrderItems.remove(this);

    if (salesOrderItem.SalesOrderItemId() > 0 &&
                       self.SalesOrderItemsToDelete.indexOf
(salesOrderItem.SalesOrderItemId()) === -1)
        self.SalesOrderItemToDelete.push(SalesOrderItemId());

}

self.addSalesOrderItem = function () {
   // alert(" add salesorder item"); // funkade
var salesOrderItem = new SalesOrderItemViewModel(
{ SalesOrderItemId: 0,         ProductId: 1, Quantity: 1, 
ObjectState:     ObjectState.Added });
self.SalesOrderItems.push(salesOrderItem);
};
};
 //UnitPrice: 1

LoadSeats($('#SeatId'));
LoadEmployees($('#EmployeeId'));
LoadPaymentMethods($('#PaymentMethodId'));

这是我的部分编辑视图。

<table class="table table-striped">
    <tr>
        <th>Product Name</th>
        <th>Quantity</th>
        @*<th>Unit Price</th>*@
        <th><button class="btn btn-info btn-xs" 
    data-bind="click: addSalesOrderItem">Add</button></th>
    </tr>
    <tbody data-bind="foreach: SalesOrderItems">
    <tr>
        <td>
            @*<select id="productCategory" class="pc form-control" 
    data-bind="value: ProductId">
                <option>Select</option>
            </select>*@
            @*<select data-bind="options: $parent.product1, 
    optionsText: 'ProductName', optionsValue: 'ProductId', 
    value: ProductId"></select>*@
            <select data-bind=
    "options: itemss, optionsText: 'ProductName', 
    value: ProductId,     optionsValue: 'ProductId', 
    selectedOption:     selectedOption"> </select>

        </td>
        @*<td class="form-group">
<input class="form-control input-sm" data-bind="value: ProductId" /></td>*@
        <td class="form-group">
<input class="form-control input-sm" data-bind="value: Quantity"/></td>
        @*<td class="form-group">
<input class="form-control input-sm" data- bind="text: UnitPrice"/></td>*@
        <td class="form-group">Delete</td>
    </tr>
    </tbody>
</table>

这是我创建的时候 创建订单

这是我编辑订单的时间 在此处输入图片说明

当我保存时我遇到了这个问题 在此处输入图片说明

我在将子级加载到我的选项列表时遇到问题。我创建了订单,但无法编辑。它不会加载下拉列表。我的目标是在订单上按“编辑”。

It will have selected the current product in the dropdownlist on the orderitem. And I want to put the price from Product Model to the view(when choosing an item from dropdownlist) I will upload pictures.

I would like a road to follow. I am new to knockout/mvc and I cant find examples on mapping. I would appriatiate any feedpack or steps I can use. If you need more from me, just write.

Thank you!!!

This is my Create View btw(how it is linked to knockout)

@model TheSolution.Domain.viewModels.SalesOrderViewModel
@using System.Web.Script.Serialization


@{
ViewBag.Title = "Create Sales Order";
}

@{
string data = new JavaScriptSerializer().Serialize(Model);
}

@section scripts
{
<script src="~/Scripts/knockout-3.4.0.js"></script>
<script src="~/Scripts/knockout.mapping-latest.js"></script>
<script src="~/Scripts/salesorderviewmodel.js"></script>
<script type="text/javascript">
    var salesOrderViewModel = new SalesOrderViewModel(@Html.Raw(data));
    ko.applyBindings(salesOrderViewModel);
</script>
}


@Html.Partial("_EditSalesOrder");
Tim Bm

Since Ajax is loading asyc. It didnt had the time to load.

To fix the Edit problem with loading my Dropdown list. I used an ajaxStop in the Views(Create and Edit) It waits until ajax have loaded before GET the view

Here is the code

    $(document).ajaxStop(function (event, request, settings) {

        var salesOrderViewModel = new SalesOrderViewModel(@Html.Raw(data));
        ko.applyBindings(salesOrderViewModel);
    });

并使用价格,我必须执行ko ArrayFirst来将可观察到的ProductId与Products Array(我加载了Ajax的ProductId)中的ProductId匹配,然后它将返回模型中该行的UnitPrice值。

这就是它的样子。

self.findItem = function () {
    console.log(self.itemss().length);
    var thePrice = ko.utils.arrayFirst(self.itemss(), function (item) {
        return item.ProductId === self.ProductId();

    }).UnitPrice;
    console.log(thePrice);
    return thePrice * self.Quantity();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

复杂列表子项的ASP.NET MVC 5编辑选项

来自分类Dev

复杂列表子项的ASP.NET MVC 5编辑选项

来自分类Dev

jQueryUI switchClass子项选项无效

来自分类Dev

ButtonBox中的同类子项

来自分类Dev

在ExpandableListView中更新子项

来自分类Dev

ExpandableListAdapter中的子项的ContextMenu

来自分类Dev

在AdapterView中查找子项

来自分类Dev

在NSDictionary中查找子项

来自分类Dev

在umbraco中获取子项

来自分类Dev

从 StackPanel 中删除子项

来自分类Dev

子项子项收集子项

来自分类Dev

如何在Firebase中的子项中添加Value子项?

来自分类Dev

在DOM表中追加子项

来自分类Dev

从Redis的哈希中获取子项

来自分类Dev

如何转换dataweave中的子项

来自分类Dev

在GridView中居中子项

来自分类Dev

Android从RecyclerView中删除子项

来自分类Dev

在子项中获取父指令

来自分类Dev

在子项中挂载父组件

来自分类Dev

Android在listView中获取子项

来自分类Dev

侦听列表子项中的更改

来自分类Dev

从 Json 对象中删除子项

来自分类Dev

嵌套 json 中的子项总数

来自分类Dev

在 JSON DataSnapshot 中获取子项

来自分类Dev

如何通过子项本身中的删除按钮删除子项组件

来自分类Dev

为什么在cloud9中加载离子项目需要很长时间?

来自分类Dev

为什么在cloud9中加载离子项目需要很长时间?

来自分类Dev

在页面加载中检查所有子项时未选中父项

来自分类Dev

向子项添加子项故障