2016-07-26 3 views
0

누구든지 나를 도울 수 있는지 궁금합니다. 나는 자바 스크립트가 처음이다. JavaScript에서 배열에 특정 값을 넣는 목록이 있습니다. 내가 뭘 하려는지 사용자가 @ Html.DropDownList 값을 선택한 다음 해당 배열에서 ID를 찾아 다른 다른 속성에 액세스 할 수 있습니다. 문제가있는 부분은 배열에서 이러한 값을 검색하는 것입니다. 자바 스크립트는 드롭 다운 목록과 동일한 페이지 내에 있습니다. 필요한 경우 자세한 내용을 제공 할 수 있습니다.자바 스크립트 배열 내의 값 검색

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"          
     }) 

전역에는 var (목록 임) ViewBag에서 배열을 만들기. 내가 StockCode, 설명, QtyInStock, QtyOnOrder 등의 값을 얻기 위해 노력하고

<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> 

정확한 값을 얻으려고 노력에서 문제가 있습니다 경우 아래

<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> 

이다

업데이트 또한 시도했습니다

GetStockItemsFromDB()가 제품 목록을 반환하는 컨트롤러

ViewBag.Products = JsonConvert.SerializeObject(GetStockItemsFromDB().Take(2)); 

보기

var model = '@Html.Raw(Json.Encode(ViewBag.Products))'; 
alert(model); 

이 나를 내용을 볼 수 있지만, 나는이 솔루션이 함께 끝났다

+0

selectList의 (@ ViewBag.StockCodeList ... 당신은 당신의 실제에 @를해야합니까 코드? – nocturns2

+0

그래,하지만 난 성공하지 못하게 면도기를 피하려고 했어. –

답변

0

neeed 값을 얻기 위해 그들을의 반복 할 수 있습니다. 보기 가방을 사용하지 않고 내 모델 및 기타 몇 가지 변경 사항을 추가하십시오.

컨트롤러

자바 스크립트

숨겨진 텍스트 상자

<input type="hidden" id="param3" value="@Model.ProductsJson" /> 

에 보내기

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); 

보기

<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>