0

我正在尝试为位于向导的 FinishNavigationTemplate 内的占位符控件内的 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 回答