Как: использовать AJAX в пользовательском серверном элементе управления ASP.NET - PullRequest
4 голосов
/ 27 февраля 2009

Кто-нибудь знает хороший учебник, демонстрирующий использование существующего расширителя элемента управления AJAX в пользовательском элементе управления ASP.NET Server?

Я не хочу создавать «Пользовательский серверный контроль AJAX». Я хочу создать пользовательский серверный элемент управления, использующий существующий расширитель элементов управления AJAX.

Я хотел бы объединить asp: TextBox, asp: ImageButton, asp: CustomValidator (с клиентским javascript из встроенного ресурса) и ajax: CalendarExtender в один серверный элемент управления. Или это уже было создано?

Любая помощь будет принята с благодарностью. Спасибо.

ОБНОВЛЕНИЕ: В основном, я хотел бы создать CompositeControl, который имеет ajax: CalendarExtender в качестве дочернего элемента управления.

Ответы [ 3 ]

3 голосов
/ 08 марта 2009

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

Составной элемент управления может наследоваться от Control или WebControl. Лично я нахожу, что Control более полезен для наследования, потому что мне обычно не нужно много дополнительных вещей, которые вы получаете из WebControl, таких как свойства стилей, поскольку я обычно просто создаю стиль с помощью одного свойства CssClass.

Вам также необходимо убедиться, что ваш класс реализует интерфейс INamingContainer. Это гарантирует, что каждый дочерний элемент управления автоматически получит уникальное имя, если элемент управления будет использоваться несколько раз в одном родительском контейнере.

Самое важное, что нужно сделать при создании составного элемента управления, это переопределить метод CreateChildControls элемента управления. Вся логика создания элементов управления должна быть здесь. Фреймворк автоматически убедится, что он вызывается в нужное время в жизненном цикле страницы.

Вот небольшой пример:

public class MyCompositeControl : Control, INamingContainer
{
    protected override void CreateChildControls()
    {
        Controls.Clear();

        var textbox = new TextBox();
        textbox.ID = "TextBox1";
        Controls.Add(textbox);
        if (!Page.IsPostBack || !IsTrackingViewState)
        {
            // make sure you set the properties after
            // you add it to the parent or the viewstate
            // won't save properly
            textbox.MaxLength = 30;
        }

        var button = new Button();
        button.ID = "Button1";
        Controls.Add(button);
        if (!Page.IsPostBack || !IsTrackingViewState)
        {
            button.Text = "Save";
        }
    }
}

Я не думаю, что ASP.NET AJAX должен сильно усложнять. Единственное, о чем я могу подумать, это то, что вам нужно убедиться, что вы создаете ScriptManager на любой странице, к которой будет добавлен составной элемент управления.

На сайте MSDN приведен полный пример . В этом блоге есть еще один хороший пример 1017 *.

0 голосов
/ 06 марта 2009

Я бы предложил вам поиск по MSDN. Я видел несколько хороших статей на эту тему в их журналах за последний год или два, которые были довольно тщательными. Но у меня нет ссылок на них, и я слишком ленива к Google для вас. : \

0 голосов
/ 27 февраля 2009

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

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