无法统计选择项目

时间:2017-08-07 07:03:06

标签: javascript c# html

我在使用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:选项以编程方式添加

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

:使用javascript检查时正确返回

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

如何在C#中为SecondaryAreaCount获得正确答案?

1 个答案:

答案 0 :(得分: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>