Наиболее вероятной причиной является то, что dt
не установлено.
Следующая наиболее похожая причина заключается в том, что исключение фактически выдается в dlspec_ItemDataBound
.
Вот почему довольно важно посмотреть на стек вызовов исключений и, если возможно, включить его в свой вопрос.
Чтобы получить большое количество полезной информации из исключения, попавшего в ваш код, вы можете вызвать его метод ToString. Например, в вашем блоке catch:
Console.Write(ex.ToString();
Обновление
У меня есть представление об источнике проблемы, с которой мы сталкивались много раз (при условии, что вы используете проект веб-приложения):
Если вы перемещаете элемент управления с одной страницы / пользовательского элемента управления на другой, просто вырезая и вставляя разметку из страницы / источника пользовательского элемента управления без перехода в режим дизайна после внесения изменений, Visual Studio не делает этого. всегда обновляйте ссылки в файле конструктора.
Если вы откроете файл конструктора для пользовательского элемента управления, вы можете подтвердить это, выполнив поиск dlspec. Если его там нет, то это источник вашей проблемы.
Поскольку мы неоднократно сталкивались с этим, всякий раз, когда мы перемещаем подобные элементы управления, мы всегда переключаемся в режим разработки, что-то пачкаем, а затем сохраняем. И для безопасности мы обычно дважды проверяем файлы конструктора, чтобы убедиться, что предыдущая запись была удалена, а новая запись прочитана.