不触发WebControl的触发器方法

时间:2009-04-21 08:26:08

标签: .net asp.net page-lifecycle lifecycle

这是我的情景:
我有一个带占位符的页面。该页面添加了dynimcally不同类型的控件(我们不想显示一些数据 - 通过查询字符串或回发获取id,因为我们还有一棵树)到这个占位符。
添加的控件全部,或多或少,包含一个文本框(显示元素的名称),复选框(显示元素的活动状态)和一个在此webcontrol中触发方法的保存按钮。

现在我的问题非常明显: 因为我正在动态添加控件(并且对于每个条件:!Postback和Postback),所以添加控件内的save-method不会触发 - 无论我做什么......

我只是愚蠢得到诀窍:)

一些幕后信息(工作流程):

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.Page.IsPostBack)
    {
        this.SelectedElement = SomeMagicMethod();
    }
}

protected void NodeSelected(object sender, TreeViewNodeEventArgs e)
{
    this.SelectedElement = SomeOtherMagicMethod();
}

protected override void OnLoadComplete(EventArgs e)
{
    // we have to take this life-cycle!
    if (this.SelectedElement!= null)
    {
        this.DisplayElement();
    }
}

private void DisplayElement()
{
    var UC = this.LoadControl(UCPath) as DataTypeUC;
    if (UC == null)
    {
        return;
    }

    UC.ID = EditCampaignFolderUCID;
    UC.SetData(this.SelectedElement);
    UC.DataBind();
    this.phContent.Controls.Add(UC);
}

2 个答案:

答案 0 :(得分:0)

在动态添加控件时,您还必须每次都连接保存按钮的事件(即,如果动态生成保存按钮)。

答案 1 :(得分:0)

诀窍是:重新启动oninit中的所有内容,并按顺序将视图状态保存在最后一个请求中...棘手棘手