Рекомендации по привязке данных для пользовательских элементов управления в веб-формах - PullRequest
2 голосов
/ 03 марта 2010

Мне было интересно узнать о некоторых лучших методах связывания данных в веб-формах.

Например, у нас есть элемент управления:

public partial class MyUserControl : UserControl
{
    public override void DataBind()
    {
        //#1
        base.DataBind();
        //#2
    }
}

Если бы мы хотели, чтобы этот элемент управления связывал свои данные автоматически, мы бы сделали что-то вроде этого:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.DataBind();
    }
}

В первом разделе кода, если мы выполняем привязку данных перед вызовом base.DataBind () (# 1), то это означает, что, например, если мы связываем данные с ListView, нам не нужно вызывать ListView. DataBind (), потому что когда мы вызываем base.DataBind () для нашего элемента управления, он рекурсивно вызывает DataBind для всех дочерних элементов управления. Кроме того, у нас не будет доступа ни к одному из свойств элемента управления, которые были ему назначены с использованием блоков кода привязки данных <% #%>

Если мы выполняем привязку к нашим элементам управления после base.DataBind () (# 2), то это означает, что DataBind вызывается для этих элементов управления дважды. Один раз, когда вызывается base.DataBind (), и второй раз, когда мы вынуждены вызывать control.DataBind ().

Кто-нибудь знает какую-то схему, которой я могу следовать здесь, о которой я не знаю?

Имею ли я здесь смысл?

Что я делаю не так?

EDIT: Глядя на эту страницу: http://msdn.microsoft.com/en-us/library/w5e5992d.aspx

Используйте этот метод для привязки данных из источник для управления сервером. это Метод обычно используется после извлечение набора данных через запрос к базе данных. Метод в основном используется разработчиками элементов управления; большинство элементов управления выполняют привязку данных автоматически.

Похоже, что лучше всего автоматически связывать данные управления. Привязка данных - это когда мы явно устанавливаем источник данных.

1 Ответ

1 голос
/ 03 марта 2010

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

Теперь, несмотря на это, эти страницы были не слишком хорошо спроектированы, и мы не должны были сталкиваться с этой проблемой, но я предпочитаю придерживаться явного и попросить мою страницу сообщить дочерним элементам управления, когда делать свое дело - вы можете избежать вызова base.DataBind и делать это явно вместо этого - вы также можете не переопределять метод DataBind таким образом, а вместо этого вызывать метод в вашем элементе управления под другим именем.

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