2009-06-02 1 views
2

Я создаю приложение счета и в разделе, где пользователь может вводить позиции, некоторые из полей будут включать: количество, цена, расширенная цена, описание и т. Д.Как проверить, не введен ли ни один, ни все текстовые поля на странице ASP.NET?

Если пользователь вводит что-либо в любой из поля, соответствующие поля требуются, но если данные не вводятся ни в какое поле, в соответствующих полях ничего не требуется. Каков эффективный и чистый способ сделать это, не делая кучу утверждений if?

Я думаю, что это похоже на проверку, если только один текстовый текст имеет текст.

ответ

3

Вы можете попробовать что-то подобное в событии ServerValidate CustomValidator.

// test for all textboxes having some text in them... 
e.IsValid = (from TextBox c in this.Controls 
      where c is TextBox 
      select c).All(tb => !string.IsNullOrEmpty(tb.Text)); 

Для этого может потребоваться некоторое вмешательство, но вы получите эту идею. Измените соответственно, чтобы проверить, что все текстовые поля пусты.

Вы также можете использовать JQuery для проверки на стороне клиента в вашем CustomValidator

function clientValidate(sender, e) { 

    // get array of textboxes with a common css class 
    var textBoxes = $("#SomeCssSelector input").val(); 

    // loop here to test for having text or no text. 
    e.IsValid = ... ; 


} 
+0

Будет ли это касаться каждого элемента управления на странице, чтобы увидеть, является ли это текстовым полем? Быстрее программировать, но, возможно, не быстрее обрабатывать? –

+0

Да, это, вероятно, будет ходить по коллекции управления. Его стандартный запрос Linq to Objects - так что я думаю, что они оптимизировали этот код там, где это возможно. –

2

Вы можете создать массив TextBox и сохранить ссылки на все связанные текстовые поля в массиве. Когда вам это понадобится, вы можете перебирать массив в цикле for, ища первый элемент со значением. Как только вы найдете тот, у которого значение, которое вы знаете, все остальные элементы в этом массиве также нуждаются в значениях.

Кроме того, если у вас есть другие группы связанных текстовых полей, вы можете создать дополнительные массивы, чтобы помочь им сгруппировать.

0

Несколько способов, если это ASP.NET.

  1. Использовать полевые валидаторы, доступные в ASP.NET.
  2. Используйте JavaScript для Windows Forms.

Для Windows Forms также используйте контрольные валидаторы или вы можете использовать простую функцию, в которой вы передаете массив управления. Если какой-либо элемент в массиве заполнен, он требует, чтобы все предметы заполнялись, возвращая поля, которые не заполнены, и т. Д.

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