我在使用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获得正确答案?
答案 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>