yogesh vaidya Ответов: 0

Что не так в этом коде , код показывает только список катагорий, но не попадает в функцию lode product


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

мне нужна помощь, чтобы решить эту проблему

Что я уже пробовал:

Html без модели

<div class="container">
	<div class="master">
		<h4>Order Deails </h4>
		<table class="table table-responsive">
			<tr>
				<td>Order Number :</td>
				<td>
					<input type="text" id="Order No" class="form-control" />
					<span class="error">Order Number Requered </span>
				</td>
				<td>Order Date :</td>
				<td>
					<input type="text" id="OrderDate" class="form-control" />
					<span class="error"> Valide Order Date Requered (ex: MM/dd/yyyy) </span>
				</td>
			</tr>
			<tr>
				<td>Description</td>
				<td colspan="3">
					<textarea id="Description" class="form-control"></textarea>

				</td>
		</tr>
		</table>
	</div>
	<div class="Details">
		<h4>Order Items </h4>
		<table class="table table-responsive">
			<tr>
				<td>Category</td>
				<td>Product</td>
				<td>Qty</td>
				<td>Rate</td>
				<td> </td>
			</tr>
			<tr class="mycontainer" id="mainrow">
				<td>


					<select id="productCategory" class="pc form-control" onchange="LodeProduct(this)">
						<option>-Select-</option>
					</select>
					<span class="error">Select Category </span>
				</td>
				<td>
					<select id="product" class="product form-control">
						<option>-Select-</option>
					</select>
					<span class="error">Select Product </span>
				</td>
				<td>
					<input type="text" id="Quantity" class="Quantity form-control" />
					<span class="error">Enter Valid Quentity </span>
				</td>
				<td>
					<input type="text" id="Rate" class="Rate form-control" />
					<span class="error">Enter Valid Ratre </span>
				</td>
				<td>
					<input type="button" id="add" value="add" style="width:80px " class="btn btn-success" />
				</td>
			</tr>
		</table>
	</div>
	<div id="orderItems">
		<table class="table table-responsive " id="orderdetailsItems"></table>
		<span id="orderItems" style="color:red"></span>
	</div>
	<div style="padding:10px 0; text-align:right ">
		<input id="submit" type="button" value="Save Order" class="btn btn-warning" style="padding:10px 20px" />
	</div>
</div>
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
@section Scripts{
	<script src="~/Scripts/bootstrap.min.js"></script>
	<script src="~/Scripts/jquery-ui-1.11.4.min.js"></script>
	<script src="~/Scripts/MyScriptst.js"></script>
	<script>
		$(document).ready(function () {
			$("#OrderDate").datepicker({
				dateFormat: "dd-mm-yy"
			});
		})

	</script>
	<style>
		span.error {
			display: block;
			visibility: hidden;
			color: red;
			font-size: 90%;
		}
		tr.error {
			background-color: rgba(255,0,0,0.35);
		}
	</style>
}



в контроллерах

public class MyHomeController : Controller
   {
       // GET: MyHome
       public ActionResult Index()
       {
           return View();
       }

       public JsonResult GetProductCategories()
       {
           List<Category> categories = new List<Category>();
           using (MydatabaseEntities dc = new MydatabaseEntities())
           {
               categories = dc.Categories.OrderBy(a => a.CategoryName).ToList();

           }
           return new JsonResult { Data = categories, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
           //return Json( categories, JsonRequestBehavior.AllowGet);

       }
       public JsonResult GetProducts(int categoryID)
       {
           List<Product> products = new List<Product>();
           using (MydatabaseEntities dc = new MydatabaseEntities())
           {
               products = dc.Products.Where(a => a.CategoryID.Equals(categoryID)).OrderBy(a => a.ProductName).ToList();
           }
           return new JsonResult { Data = products, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
       }
   }


Из Папки Скриптов Myscript.js

var Categories = []

// fetching Database from table Categories
function LodeCategoty(element) {
   
    if (Categories.length == 0) {
        //ajax function to fetch data
        $.ajax({
            type: "Get",
            url: '/MyHome/GetProductCategories',
            success: function (data) {
                Categories = data;
                renderCategory(element);
            }
        })
    }
    else {
        //render Category to the element 
        renderCategory(element);
    }
}
function renderCategory(element) {
    var $ele = $(element);
    $ele.empty();
    $ele.append($('<option/>').val('0').text('select'));
    $.each(Categories, function (i, val) {
        $ele.append($('<option/>').val(val.CategoryID).text(val.CategoryName));
    });
}

function LodeProduct(CategoryDD) {
    $.ajax({

        type: "GET",
        url: "/MyHome/GetProducts",
        data: { 'CategoryID': (CategoryDD).val() },
        success: function (Data) {
            //render product to apropriat dropdown
            renderProduct($(CategoryID).parents('.mycontainer').find('select.product'), Data);
        },
        error: function (error) {
            Console.log(error);
        }
    })
}
function renderProduct(element, data) {
    var $ele = $(element);
    $ele.empty();
    $ele.append($('</option>').val('0').text('select'));
    $each(data, function (i, val) {
        $ele.append($('</option>').val(val.ProductID).text(val.ProductName));
    });
}

LodeCategoty($('#productCategory'));


класс моделей

namespace BillingDemo.Models
{
    using System;
    using System.Collections.Generic;
    
    public partial class Category
    {
        public int CategoryID { get; set; }
        public string CategoryName { get; set; }
    }
}



namespace BillingDemo.Models
{
    using System;
    using System.Collections.Generic;
    
    public partial class Product
    {
        public int ProductID { get; set; }
        public int CategoryID { get; set; }
        public string ProductName { get; set; }
    }
}

Bryian Tan

Вы проверили, что находится в переменной CategoryDD?

yogesh vaidya

сначала попробовал там categoryID ,
который я вызвал в методе renderCategoty
$.each(Categories, function (i, val) {
$ele.append($(").val(val.CategoryID).text(val.CategoryName));
});

но это не должно сработать
тогда один друг сказал что вам нужен пустой местный глагол там
причина

типа: "вам",
url: "/ MyHome/GetProducts",
данные: { 'CategoryID': (CategoryDD).val() },

здесь вы передаете значение от одного к другому

я студентов и новых в asp.net MVC и Ява .

я воспринимаю этот проект с YouTube
Предварительная форма ввода основных сведений в asp.net MVC

в этом уроке он показывает идеальный запуск проекта, но он не ответил Мне об этом
если есть какая-то логика, пожалуйста, дайте мне полезные советы

0 Ответов