2013-07-19 25 views
0

我想动态地为一个LinkBut​​ton控件动态地设置一个占位符控件,该控件位于向导的FinishNavigationTemplate内部。我想做普通回发的理由是因为按钮开始下载。PostBackTrigger控制里面的向导里面的向导FinishNavigationTemplate

我(简化)标记看起来是这样的:

<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> 

现在我wan't添加LinkBut​​ton的ID作为一次占位符Visible属性设置为true 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); 
} 

这让我异常“ID为‘lbtnClick’的控制不能在UpdatePanel的‘updPanel’触发找到。” 有没有办法保持标记的方式,并以某种方式使linkbutton做一个正常的回发?

回答

0

这似乎是工作,但如果有人有更好的解决办法,我会很乐意接受它

PostBackTrigger trigger = new PostBackTrigger(); 
trigger.ControlID = "offerWizard$FinishNavigationTemplateContainerID$lbtnClick"; 
updPanel.Triggers.Add(trigger); 
1

您还可以使用trigger.ControlID = lbtnClick.UniqueID;