2017-08-07 95 views
0

我在使用select.Items.Count時遇到問題。無法計數選擇項目

情況1:

<select id="PrimaryArea" style="width: 100px" required tabindex="6" runat="server"> 
    <option value="A">Item1</option> 
    <option value="B">Item2</option> 
    <option value="C">Item3</option> 
    <option value="D">Item4</option> 
</select> 

在C#

int PrimaryAreaCount=PrimaryArea.Items.Count // return 4 

情況2:選項中加入JavaScript編程

<select id="SecondaryArea" style="width: 100px" required tabindex="7" runat="server"> 
</select> 

:使用的javascrip檢查時,請正確返回牛逼

var select = document.getElementById("<%= SecondaryArea.ClientID %>"); 
var js = JSON.stringify(<%= SecondaryTable %>); 
var js2 = JSON.parse(js); 
var len = js2.length; 
var i = 0; 
while (i < len) { 
    var new_option = new Option(js2[i].ref_desc, js2[i].cd); 
    select.options[select.options.length] = new_option; 
    i += 1; 
} 

在C#

int SecondaryAreaCount=SecondaryArea.Items.Count // always return 0 

我應該怎麼做,以獲得SecondaryAreaCount在C#中的正確答案?

回答

0

如果我正確理解了您的第二個方案,您將從一個空的項目列表開始,然後在JavaScript中添加選項。

在這種情況下,您無法在服務器端C#代碼中計算正確的計數,因爲只有在頁面已經提供給客戶端後纔會執行JavaScript。

一個解決方案是使用額外的隱藏輸入來回傳計數結果。

<input id="SecondaryAreaCount" type="hidden" value="0" /> 

<script> 
// your existing JS loop here ... 

var countResult = document.getElementById("SecondaryAreaCount"); 
countResult.value = i; // var i is select.options.length after the while loop 

</script>