ASP下拉列表,选项设置为false

时间:2013-07-31 21:07:25

标签: c# asp.net .net-4.0 webforms html-select

我有一个表单的下拉列表:

 <asp:DropDownList runat="server" CssClass="holdTypeDDL" ID="holdTypeDDL"></asp:DropDownList>

并在asp.com页面的c#代码隐藏中填充onload!Page.isPostback via:

 holdTypeDDL.Items.Add(new ListItem(string.Empty, false.ToString()));
            holdTypeDDL.Items.Add(new ListItem(HoldTypeType.Now.Description(), false.ToString()));
            holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAHoldType.Description(), true.ToString()));
            holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAAHoldType.Description(), true.ToString()));
            holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAAAHoldType.Description(), false.ToString()));

我注意到如果选择了其中一个选项,其字符串值为False,则不会将其视为已选中。即回发后所选索引为0。如果选择了一个带有true的项目并且在回发时抓取了值,则它可以正常工作。

我找不到任何关于原因的文件。为什么在option元素的值中有一个“False”字符串使它不能正确回发?

编辑:

以HTML格式呈现:

<select class="holdTypeDDL" id="BodyContent_holdTypeDDL" name="ctl00$BodyContent$holdTypeDDL">
    <option value="False"></option>
    <option value="False">Now</option>
    <option value="True">AA Hold Type</option>
    <option value="True">AAA Hold Type</option>
    <option value="False">AAAA Hold Type</option>

</select>

1 个答案:

答案 0 :(得分:3)

我相信价值观应该是独一无二的。由于您有多个TrueFalse值,因此当它将其标记为已选中时,它会将第一个值设为选中。你为什么使用这些值?您可以使用与文本相同的内容,或更改如下的值:

holdTypeDDL.Items.Add(new ListItem(string.Empty, false.ToString() + "0"));
holdTypeDDL.Items.Add(new ListItem(HoldTypeType.Now.Description(), false.ToString() + "1"));
holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAHoldType.Description(), true.ToString() + "2"));
holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAAHoldType.Description(), true.ToString() + "3"));
holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAAAHoldType.Description(), false.ToString() + "4"));

这应该有效。