从另一用户控制的控制更新在一个用户控件的更新面板(Updating an Update Panel

2019-09-24 03:32发布

首先起来,道歉这个问题的长度!

我有两个是相互依存的有些对他们的多个Web用户控件的页面。 在一个理想的世界里,他们可能是一个控制,但由于种种原因,他们需要是两个。

我需要在基于另一个控制一个下拉列表的动作的控制中的一个来更新更新面板,如下所述。

为此,我们将调用控件JobControl作业控制呼叫控制 。 JobControl作业控制包含一个下拉列表,这是从AJAXControlToolkit一个层叠下拉列表中的一部分。 当此下拉有选择的指数的变化我想更新在呼叫控制的控制面板。

呼叫控制暴露出它的更新面板这样的:

    public UpdatePanel UpdatePanel
    {
        get { return updCall; }
    }

JobControl作业控制有一个公共的成员AssociatedCallControl

private ServiceCallControl associatedCallControl;

public ServiceCallControl AssociatedCallControl
{
    get { return associatedCallControl; }
    set { associatedCallControl = value; }
}

两个随后在含有控制页面的onLoad事件相关联在一起。

这太问题: 更新面板错误:控制与ID“XXX”不能在UpdatePanel的发现促使我尝试这种在JobControl作业控制的onload事件:

if (associatedCallControl != null)
{
    AsyncPostBackTrigger trig = new AsyncPostBackTrigger();
    string s = ddCallGroup.ClientID;
    //ddCallGroup is the dropdown I want to trigger the update of the CallControl
    trig.ControlID = ddCallGroup.ClientID; //Also Tried ddCallGroup.ID
    trig.EventName = "CallGroupChanged";
    associatedCallControl.UpdatePanel.Triggers.Add(trig);
}

用下面也加入到JobControl作业控制

public void CallGroupChanged(object sender, EventArgs e)
{
     //Stuff to update the CallControl panel including calling update();
     associatedCallControl.RefreshMehods(int.Parse(ddCallGroup.SelectedValue));        
}

哈弗在这一切之后我仍然可以A control with ID 'TabContainer1_tabJob_ctrlJob_ddCallGroup' could not be found for the trigger in UpdatePanel 'updCall'.

我是不是与虎谋皮? 我要对这个错误的方式或有我只是错过了什么?

Answer 1:

如果妳可以试试这个, - 创建和调用的呼叫控制一个EventHandler委托; - 它指向当前页的方法; - 在这种方法中,简单地调用

JobCtrl.UpdatePanel.Update();

希望这有助于!

编辑:代码示例

CallControl.ascx.cs:

public partial class JobControl
{
    public void CallGroupChanged(object sender, EventArgs e)
    {
        // do your work

        if (this.MyEventDelegate != null) // check if the event is not null
            this.MyEventDelegate(this, null); // invoke it
    }

    public event EventHandler MyEventDelegate;
}

Page.aspx:

<controls:CallControl runat="server" ID="CallControl1" OnMyEventDelegate="RefreshMethod" />

Page.aspx.cs:

public partial class Page_aspx : System.Web.UI.Page
{
    protected void RefreshMethod(object sender, EventArgs e)
    {
        this.CallControl1.UpdatePanel.Update();
    }
}

希望这是明确的..!



文章来源: Updating an Update Panel in a usercontrol from a control in another user control