<asp:ListBox ID="lst_newGrpMembers"
DataValueField="Name"
SelectionMode="Multiple"
Width="120px"
ToolTip="Press ctrl to select multiple users"
runat="server">
</asp:ListBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server"
ControlToValidate="lst_newGrpMembers"
ErrorMessage="Atleast one member required"
CssClass="Error"
Text="*Atleast one member required"
ValidationGroup="CreateGroupValidationGroup">
</asp:RequiredFieldValidator>
我有一个列表框的必填字段验证器,它会在列表框中没有条目的情况下验证并显示错误,但是当我将项目添加到列表框时,它仍然显示错误。当我选择我添加的列表框项目并单击提交时,它工作正常。如何验证列表框。
答案 0 :(得分:10)
在RequiredFieldValidator
上,尝试将InitialValue
设置为清空字符串:
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
InitialValue=""
ControlToValidate="lst_newGrpMembers"
ErrorMessage="Atleast one member required"
CssClass="Error"
Text="*Atleast one member required"
ValidationGroup="CreateGroupValidationGroup">
</asp:RequiredFieldValidator>
答案 1 :(得分:0)
列表框的内容不会发送到服务器,只会发送选定的项目。这是表单在HTTP中的工作方式。添加后选择您的项目或将其放入隐藏的表单字段(通过脚本)以发送到服务器。
通过脚本可以通过各种方式解决这个问题。我确实找到了这个控制(我没用过它),我相信这对你有用:http://www.metabuilders.com/Tools/DynamicListBox.aspx
这里还会详细介绍: http://forums.asp.net/t/1687079.aspx/1 他们使用jQuery在回发中选择项目:
function save() {
$("#lstFiles").each(function () {
$("#lstFiles option").attr("selected", "selected");
});
return true;
}
答案 2 :(得分:0)
问题在于它验证ListBox中是否存在SELECTED值。当您发布它时,您可能只会收到ListBox的选定值。将项添加到ListBox时,将SELECTED属性设置为true,并禁用ListBox以避免取消选择。
像这样:
ListItem myItem = new ListItem();
myItem.Text = TextBox1.Text;
myItem.Selected = true;
ListBox1.Items.Add(myItem);
希望它有所帮助。