Присвойте событие программно ребенку в FormView

Я понимаю, что можно декларативно присвоить обработчик событий дочернему элементу управления в formview путем добавления его атрибута на aspx странице (т.е. onclick = "Button_Click"), но если бы я хотел сделать это программно, как я пошел бы об этом? То управление не будет найденным через FormView. FindControl в событиях Page's Init или Load, таким образом, это не может быть присвоено на тех этапах. Событие DataBound FormView позволит Вам находить управление, но является несоответствующим, так как то единственное происходит однажды, и затем событие будет не всегда связываться, и это не будет стрелять. Я не спрашиваю, потому что я не могу обойти его, я просто хотел знать, как это могло быть сделано.

Удачи.

6
задан denny 18 December 2009 в 18:59
поделиться

4 ответа

Вы должны использовать событие ItemCreated в FormView. Это происходит после создания всех строк, но до того, как FormView будет привязан к данным.

Дополнительную информацию см. На этой странице MSDN

2
ответ дан 17 December 2019 в 04:47
поделиться

в C # это осуществляется через:
this.btnProcess.Click + = новый обработчик событий (btnProcess_Click);

1
ответ дан 17 December 2019 в 04:47
поделиться

Вы пробовали PreRender? Я думаю, что это уже слишком поздно, но я удивлен, что этого не было в вашем сообщении.

Мне кажется странным, что вы добавляете событие, которое ожидаете немедленно запустить. Почему бы в этом случае просто не вызвать обработчик или функцию.

1
ответ дан 17 December 2019 в 04:47
поделиться

Может я что-то упускаю! Вместо этого вы можете использовать восходящую цепочку событий. Но элемент управления FormView не имеет события для обработки событий дочерних элементов управления. Итак, у нас есть некоторые изменения.

[System.Web.UI.ToolboxData("<{0}:FormView runat=\"server\" />")]
public class FormView : System.Web.UI.WebControls.FormView
{

    private static readonly object _itemClickEvent = new object();

    [System.ComponentModel.Category("Action")]
    public event EventHandler<System.Web.UI.WebControls.FormViewCommandEventArgs> ItemClick
    {
        add { base.Events.AddHandler(_itemClickEvent, value); }
        remove { base.Events.RemoveHandler(_itemClickEvent, value); }
    }

    protected virtual void OnItemClick(System.Web.UI.WebControls.FormViewCommandEventArgs e)
    {
        EventHandler<System.Web.UI.WebControls.FormViewCommandEventArgs> handler = base.Events[_itemClickEvent] as EventHandler<System.Web.UI.WebControls.FormViewCommandEventArgs>;
        if (handler != null) handler(this, e);
    }

    protected override bool OnBubbleEvent(object source, EventArgs e)
    {
        this.OnItemClick((System.Web.UI.WebControls.FormViewCommandEventArgs)e);
        return base.OnBubbleEvent(source, e);
    }

}

Приведенный выше фрагмент кода продемонстрировал, как мы можем добавить событие ItemClick в элемент управления FormView для обработки событий дочерних элементов управления. Теперь вам следует сопоставить или перетащить новый элемент управления FormView.

1
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: