2016-04-07 9 views
0

Я динамически заполняю идентификатор текстового поля, который сохраняется в моей базе данных. Я устанавливаю его как строку, вытягивая значение из набора данных, которое определяет параметры для поиска.C# преобразование String в HtmlControl тип данных

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

Пример следующим образом:

//setting the value of the item from the dataset 
string textCode = ds.Tables["CONTROLS"].Rows[1]["TEXTCODE"].ToString(); 

//inserting the value for use with ClientID 
textCode.Attributes.Add("onfocus", "datepicker('" + textCode.ClientID + "');"); 

Я получаю ошибку: «„строка“не содержит определение для„ClientID“принимая первый аргумент„строка“может быть найден (вы отсутствует с помощью директивы или ссылка на сборку «)»

При попытке преобразовать или установить другую переменную в HTMLControl, который ClientID доступен как таковые:.

HtmlControl txtCode = textCode; 

Я получаю следующую ошибку: «Не удается неявно преобразовать« string »в« System.Web.UI.HtmlControls.HtmlControl »

Как преобразовать для использования этого динамического идентификатора?

Заранее благодарю вас за ваши предложения.

+0

ли 'txtCode' контрольный идентификатор? Другими словами, вы ищете [FindControl()] (https://msdn.microsoft.com/en-us/library/31hxzsdw.aspx)? –

+0

txtCode - это только локальная переменная, которую я сделал для преобразования текстового кода. – user3404204

+0

Вы можете отправить (отображать на отладчик) содержимое переменной textCode? –

ответ

0

Подробный ответ после комментариев .. Кажется, вы храните идентификатор управления сервером asp.net в своей базе данных, а после его получения из базы данных вы получили переменную textCode с идентификатором элемента управления на своей странице ("txtCNo").

Итак, первый шаг - найти элемент управления с этим идентификатором на вашей странице. Простым способом является метод Page.FindControl (...), но лучше просмотреть эту статью для более сложных ситуаций: Better way to find control in ASP.NET

Я также заметил, что вы пытаетесь добавить событие onfocus с вызовом на некоторый javascript функция datepicker (''). Существует лучший способ отправить идентификатор клиента элемента управления, который был найден на первом этапе. (Для получения дополнительной информации о сервере против идентификаторов клиентов смотрите на эту статью: https://msdn.microsoft.com/en-us/library/1d04y8ss.aspx)

Таким образом, ваш код должен выглядеть примерно так:

//setting the value of the item from the dataset 
string controlId = ds.Tables["CONTROLS"].Rows[1]["TEXTCODE"].ToString(); 

var control = Page.FindControl(controlId); 
if(control != null) 
{ 
    control.Attributes.Add("onfocus", "datepicker('" + control.ClientID + "');"); 
} 
+0

Я не могу использовать Attributes.Add с контролем переменной при воссоздании вашего предложения. Атрибуты.Add недоступны. – user3404204

+0

Возможно, это связано с тем, что при отладке «var control» появляется как «null», он не имеет моего возвращенного значения «txtCNo» в этой точке. – user3404204