Класс для автоматического извлечения полей базы данных в.NET Controls
Я создаю класс, который автоматически загружает запись БД, просматривает имя каждого столбца БД и заполняет соответствующее текстовое поле / метка / литерал / и т. Д., Если оно имеет такое же имя. Я получил эту идею от Rails, на случай, если это поможет уточнить, что я пытаюсь сделать.
public string presentData(Page thisForm)
{
// .. for each column name
// ... thisForm.FindControl() happens
}
Кажется, я не могу найти элемент управления, который мне нужен, и, возможно, мог бы быть лучший способ сделать это.
Изменить: Если я могу сэкономить на производительности, делая это другим способом, определенно предложите это. У меня большие формы, и рекурсивный FindControl может привести к увеличению времени выполнения.
3 ответа
FindControl не является рекурсивным, поэтому он находит только элементы управления верхнего уровня, а не элементы управления, вложенные в другие элементы управления. В этой статье приведен пример рекурсивной версии FindControl.
Я предлагаю использовать BindingSource, связанный с DataSet, вместо того, чтобы рекурсивно находить каждый элемент управления и устанавливать его значение.
http://msdn.microsoft.com/en-us/baya8sx4.aspx
http://msdn.microsoft.com/en-us/library/801dxw2t.aspx
http://www.codeproject.com/KB/grid/BindSourceBindingNavCS.aspx
http://msdn.microsoft.com/en-us/library/fbk67b6z(VS.80).aspx?ppud=4
Вы думали о том, чтобы заполнить свои элементы управления на стороне клиента? JQuery может быть хорошим местом для начала. Вы должны сгенерировать Javascript / JQuery для заполнения на сервере, а затем JQuery позаботится о поиске элементов управления. Очень эффективный.