Итеративно ссылочные элементы управления по шаблону имени (VB.NET) - PullRequest
0 голосов
/ 26 сентября 2011

Есть ли способ итеративно ссылаться на элемент управления ASP.NET на основе его шаблона имени?Возможно, с помощью «указателя» или чего-то еще?

У меня есть большой набор комбинированных списков (каждый со своим связанным элементом управления DropDownList и TextBox).DropDownList всегда имеет элемент, выбранный по умолчанию, но при использовании может потребоваться передать значение NULL.Я придумаю следующий код для обработки трех случаев: NULL, Существующий элемент, Новый элемент.

'TextBoxControl & DropDownListControl should iteratively reference their
'  respective TextBox & DropDownList controls by the actual control name
If StrComp(TextBoxControl.Text, DropDownListControl.SelectedItem.ToString) = 0 Then
    'When an Existing Item is selected, Do Something
ElseIf Not TextBoxControl.Text = "" Then
    'When a New Item is entered, Validate & Do Something
Else
    'When NULL, Do Something
End If

Проблема в том, что при таком количестве комбинированных списков я мог бы легко получить сотни строк кода.Я хочу обработать это более динамично, но я не знаю, можно ли ссылаться на элементы управления таким образом.Скажем, я хотел сослаться на все элементы управления TextBox и DropDownList соответственно.

Я могу выполнить форматирование строки с заданным шаблоном именования, чтобы сгенерировать идентификатор имени для любого из элементов управления, поскольку все они названы с одинаковым шаблоном,Например, прикрепив определенный суффикс, произнесите «_tb» для элементов управления TextBox и «_ddl» для элементов управления DropDownList:

Left(item.SelectedItem.ToString, item.SelectedItem.ToString.Length - 3) + "_tb"

Можно ли сделать подобные вещи в VB? В конечном счете, моя цель - взять значение, введенное / выбранное пользователем, если оно есть, и отправить его в хранимую процедуру на SQL Server для вставки в базу данных.

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

Да. Напишите свой код внутри функции, имеющей параметры для текстового поля и раскрывающегося списка, а затем напишите функцию в терминах этих двух параметров. Затем вы просто вызываете эту функцию для каждого набора вместо того, чтобы везде копировать / вставлять код.

Не пытайтесь выбирать вещи по имени. Это хрупко и предъявляет требования к машинам в области, предназначенной для потребления человеком.

0 голосов
/ 26 сентября 2011

Я не уверен, применимо ли то же самое, что и VBA, к вашей ситуации, но у меня была та же проблема, и я смог использовать:

Me.MultiPage1.Pages (1) .Controls ("ref"& i + 1). Значение

, где элементы управления охватывают все элементы управления в пользовательской форме (" Я ").Таким образом, если элементы управления в вашей программе соответствуют последовательной структуре именования, легко справиться, если вышеприведенное применимо vb.net

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