2008-09-24 14 views
3

Я работаю с ASP.NET 3.5. У меня есть список, в который пользователи должны добавлять элементы (я написал код для этого). Мое требование состоит в том, что по крайней мере один элемент должен быть добавлен в список или они не могут отправить форму. У меня есть несколько других валидаторов на странице, и все они записываются в элемент ValidationSummary. Я бы хотел, чтобы эта проверка списка также записывалась в контрольный элемент проверки. Любая помощь приветствуется. Спасибо.Как проверить, что окно списка не пусто (на стороне клиента)

ответ

-1

Вам необходимо зарегистрировать свой элемент управления на странице, отправив идентификатор ClientID. Затем вы можете использовать Microsoft AJAX, чтобы захватить ваш контроль и проверить значения.

5

падения в валидаторе, Добавить нужное сообщение об ошибке к нему, дважды щелкните на валидатор, чтобы добраться до кода позади для обработчика событий, а затем вы можете реализовать на сторону сервера, как это:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
     args.IsValid = ListBox1.Items.Count > 0; 
} 

Также вы можете реализовать javascript на стороне клиента.

я просто бросил это на странице и протестировали его быстро, так что вам, возможно, придется настроить его немного: (The button1 только добавляет элемент к списку Box)

<script language="JavaScript"> 
<!-- 
    function ListBoxValid(sender, args) 
    { 
     args.IsValid = sender.options.length > 0; 
    } 
// --> 
</script>  
<asp:ListBox ID="ListBox1" runat="server"></asp:ListBox> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" ValidationGroup="NOVALID" /> 
<asp:Button ID="Button2" runat="server" Text="ButtonsUBMIT" /> 

<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="CustomValidator" 
onservervalidate="CustomValidator1_ServerValidate" ClientValidationFunction="ListBoxValid"></asp:CustomValidator> 

Если вы добавляете сводка сводки на страницу, текст ошибки должен отображаться в этом резюме, если в ListBox или другом элементе управления, доступном для коллекции, нет элементов, если вы хотите, чтобы ValidationGroup была одинаковой.

1
<asp:CustomValidator 
    runat="server" 
    ControlToValidate="listbox1" 
    ErrorMessage="Add some items yo!" 
    ClientValidationFunction="checkListBox" 
/> 

<script type="Text/JavaScript"> 
    function checkListBox(sender, args) 
    { 
     args.IsValid = sender.options.length > 0; 
    } 
</script>  
5

Это не работает для меня:

function ListBoxValid(sender, args) 
{ 
     args.IsValid = sender.options.length > 0; 
} 

Но это сделал:

function ListBoxValid(sender, args) 
{ 
     var ctlDropDown = document.getElementById(sender.controltovalidate); 
     args.IsValid = ctlDropDown.options.length > 0; 
} 
1

На самом деле это правильный способ сделать эту работу (насколько это JavaScript обеспокоенно).

В списке ListBox.options.length всегда будет отображаться ваше общее количество опций, а не номер, который вы выбрали. Единственный способ, которым я нашел работу, - использовать цикл for для перехода по списку.

function ListBoxValid(sender, args) {

var listBox = document.getElementById(sender.controltovalidate); 

    var listBoxCnt = 0; 

    for (var x =0; x<listBox.options.length; x++) 
    { 
    if (listBox.options[x].selected) listBoxCnt++; 
    } 

    args.IsValid = (listBoxCnt>0) 

}

3

должен убедиться, чтобы добавить эти свойства в CustomValidator:

Display="Dynamic" ValidateEmptyText="True" 
0

эта работа для меня

<script language="JavaScript"> 
    function CheckListBox(sender, args) 
    { 
     args.IsValid = document.getElementById("<%=ListBox1.ClientID%>").options.length > 0; 
    } 
</script>  
<asp:ListBox ID="ListBox1" runat="server"></asp:ListBox> 
<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="*Required" ClientValidationFunction="CheckListBox"></asp:CustomValidator> 

 Смежные вопросы

  • Нет связанных вопросов^_^