0

ウィザードの FinishNavigationTemplate 内にある Placeholder コントロール内にある LinkBut​​ton コントロールに対して PostBackTrigger を動的に設定しようとしています。通常のポストバックを行いたい理由は、ボタンがダウンロードを開始するためです。

私の(簡略化された)マークアップは次のようになります。

<asp:UpdatePanel runat="server" id="updPanel">
    <ContentTemplate>
        <asp:Wizard runat="server" ID="wizard">
            <WizardSteps>
                <asp:WizardStep runat="server" Title="Step 1">
                    Step data
                </asp:WizardStep>
            </WizardSteps>
            <FinishNavigationTemplate>
                <asp:Placeholder ID="phTest" Visible="false" runat="server">
                    <asp:LinkButton id="lbtnClick" runat="server" />
                </asp:Placeholder>
            </FinishNavigationTemplate>
        </asp:Wizard>
    </ContentTemplate>
</asp:UpdatePanel>

PlaceHolder Visible プロパティが true に設定されたら、Linkbutton id を PostBackTrigger として追加したくありません。

protected void Page_Load(object sender, System.EventArgs e)
{
    PlaceHolder phTest = wizard.FindControl("FinishNavigationTemplateContainerID$phTest") as PlaceHolder;
    phTest.Visible = true;

    LinkButton lbtnClick = offerWizard.FindControl("FinishNavigationTemplateContainerID$lbtnClick") as LinkButton;
    PostBackTrigger trigger = new PostBackTrigger();
    trigger.ControlID = lbtnClick.ID;
    //trigger.ControlID = lbtnClick.ClientID;
    //trigger.ControlID = "FinishNavigationTemplateContainerID$lbtnClick";

    updPanel.Triggers.Add(trigger);
}

これにより、「UpdatePanel 'updPanel' のトリガーに対して、ID 'lbtnClick' のコントロールが見つかりませんでした」という例外が発生します。マークアップをそのままにして、何らかの方法でリンクボタンに通常のポストバックをさせる方法はありますか?

4

2 に答える 2

1

trigger.ControlID = lbtnClick.UniqueID; も使用できます。

于 2013-12-24T10:31:54.380 に答える
0

これはうまくいくようですが、誰かがより良い解決策を持っているなら、私は喜んでそれを受け入れます

PostBackTrigger trigger = new PostBackTrigger();
trigger.ControlID = "offerWizard$FinishNavigationTemplateContainerID$lbtnClick";
updPanel.Triggers.Add(trigger);
于 2013-07-19T13:40:32.257 に答える