2016-11-03 36 views
1

我有一個List,用於存儲從數據庫中過濾的一些記錄。 我不知道Javascript。任何人都可以教我如何將列表傳遞給Javascript並將其顯示在組合框中? P/S:我想要組合框文本字段存儲名稱(允許用戶看到)和值字段存儲nameId(從用戶隱藏)。如何將List <>傳遞給Javascript並顯示在組合框中c#

我的C#代碼背後,是如下:

public static List<bllControls> getPropertyTypeByPhaseId(int prmPhaseId) 
{ 
    bllControls clsControls = new bllControls(); 
    List<bllControls> lstControls = new List<bllControls>(); 
    lstControls = clsControls.PropertyTypeSource(prmPhaseId); 

    return lstControls; 
} 

雖然我的JavaScript代碼如下:

function onSelectedPhase(comboPhase) { 
     var phaseId = comboPhase.GetValue(); 
     PageMethods.getPropertyTypeByPhaseId(phaseId, onSuccess, onFailed); 
     function onSuccess(oaCompProj) { 
      //here should loop the List and then store in combobox 
     } 
     function onFailed(oaCompProj) { alert('Failed to get Company and Project info'); } 
    } 

我的組合框的id是ddlProperty。

回答

0

我剛剛提供了javascript邏輯在組合框中添加元素,如下所示。

var cb = document.getElementById("comboBoxId"); // combo box widget 
var lstItem = [ 
    { 
     nameId: 1, 
     name: "John" 
    }, 
    { 
     nameId: 2, 
     name: "Doh" 
    } 
]; 

// Solution 1 
for(var i = 0; i < lstItem.length; i++) { 
    var item = lstItem[i]; 
    var elem = document.createElement("option"); 
    elem.textContent = item.name; 
    elem.value = item.nameId; 
    cb.appendChild(elem); 
}​ 

// Solution 2 if var lstItem = ['[email protected]', '[email protected]']; 
for(var i = 0; i < lstItem.length; i++) { 
    var item = lstItem[i].split('@'); 
    var elem = document.createElement("option"); 
    elem.textContent = item[1]; // for character after '@' e.g. ABC or DEF 
    elem.value = item[0]; // for character before '@' e.g. 0001 or 0002 
    cb.appendChild(elem); 
}​ 

請從數據庫中檢索數據後採用此概念。 享受它。

+0

謝謝您的回覆。我想問一個更多的問題: 如果我的lstItem以這種格式存儲(「0001 @ ABC」) 如何使用'@'syombol拆分lstItem並將其存儲到組合框中? – chonglt

+0

var a ='0001 @ ABC'; var sptItem = a.split('@'); var nameId = sptItem [0]; var name = sptItem [1]; –

+0

@chonglt我剛剛編輯我的答案爲你提問。請參閱解決方案2. –

相關問題