我想知道是否有人可以帮助我。我是java脚本的新手。我有一些列表,我将某些值放入JavaScript中的数组中。我想要做的是允许用户在@ Html.DropDownList中选择一个值,然后在数组中找到该id并访问其他其他属性。我遇到问题的部分是从数组中检索这些值。 JavaScript与下拉列表位于同一页面中。如果需要,可以提供更多细节。
DropDownList
@Html.DropDownList("StockCode", new SelectList(ViewBag.StockCodeList, "Value", "Text"),
new
{
@class = "form-control selectpicker ",
data_show_subtext = "true",
data_live_search = "true",
id = "StockCode",
name = "StockCode"
})
从ViewBag(列表)创建数组,作为全局变量
<script>
Stockarray = @Html.Raw(
Json.Encode(
((List<GetProducts_Result>)ViewBag.AllStock).Select(stock => new
{
StockCode = stock.StockCode,
Description = stock.Description,
QtyInStock = stock.QtyInStock,
QtyOnOrder = stock.QtyOnOrder,
QtyAllocated = stock.QtyAllocated,
QtyLastStockTake = stock.QtyLastStockTake,
StoredPrice = stock.StoredPrice,
})
)
);
</script>
下面是我遇到问题的地方,试图获得正确的值
<script>
function FetchCall() {
var SelectBox = $("#StockCode").val();
var Values = selectWhere(Stockarray,'StockCode', SelectBox);
for (var i=0; i<Values.length; i++)
{
var test = Values[i].value;
var param_value = i +'='+test;
}
alert(param_value.join(', '));
}
function selectWhere(data, propertyName, tofind) {
for (var i = 0; i < data.length; i++) {
if (data[i][propertyName] == tofind) return data[i];
}
return (null);
}
</script>
我正在尝试获取StockCode,Description,QtyInStock,QtyOnOrder等的值。
更新我也尝试了
GetStockItemsFromDB()返回产品列表
的控制器 ViewBag.Products = JsonConvert.SerializeObject(GetStockItemsFromDB().Take(2));
视图
var model = '@Html.Raw(Json.Encode(ViewBag.Products))';
alert(model);
这允许我查看内容,但我可以迭代它们以获得我需要的值
答案 0 :(得分:0)
解决方案结束了。不使用视图包并添加到我的模型和其他一些更改。
控制器
AllProducts Products = new AllProducts();
Products.Products = new List<StockList>();
List<StockList> Stock = new List<StockList>();
Stock = (from item in GetStockItemsFromDB()
select new StockList()
{
Description = item.Description,
QtyOnOrder = item.QtyOnOrder,
StoredPrice = item.SalesPrice,
StockCode = item.StockCode
}).ToList();
Products.Products.AddRange(Stock);
Model.ProductsJson = JsonConvert.SerializeObject(Products);
查看隐藏文本框中的发送
<input type="hidden" id="param3" value="@Model.ProductsJson" />
的Javascript
<script>
function FetchCall() {
var SelectBox = $("#StockCode").val();
var JSONStock = document.getElementById("param3").value;
var parsed = JSON.parse(JSONStock);
var tofind = SelectBox;
var results = selectWhere(parsed, tofind)
alert(results.StockCode + ' ' + results.Description);
function selectWhere(parsed, tofind) {
for (var i = 0; i < parsed.Products.length; i++) {
if (parsed.Products[i].StockCode == tofind) {
return parsed.Products[i];
}
}
return (null);
}
}
</script>