FindControl错误

时间:2010-10-06 17:51:15

标签: asp.net

需要在CUW步骤中存储额外的userinfo

// register.aspx                                       

         <p>
         <b>HomeTown:</b><br /> <asp:TextBox ID = "HomeTown" runat ="server"></asp:TextBox>
         </p>
         <p>
         <b>HomepageUrl:</b><br /> <asp:TextBox ID = "HomepageUrl" runat ="server"></asp:TextBox>
         </p>
         <p>
         <b>Signature:</b><br /> <asp:TextBox ID = "Signature" runat ="server"></asp:TextBox>
         </p>
         </asp:WizardStep>
         <asp:CompleteWizardStep runat="server" />
      </WizardSteps>
   </asp:CreateUserWizard>

//这是代码背后的一部分 WizardStep UserSettings = NewUserWizard.FindControl(“UserSettings”)作为WizardStep;

     // Programmatically reference the TextBox controls
     TextBox HomeTown = UserSettings.FindControl("HomeTown") as TextBox;...ERROR Object reference not set to an instance of an object. 

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

你很有可能已经找到了这个问题的答案或者继续前进,但我在自己的搜索中发现了这个问题,并认为我会为其他可能正在搜索的人提供答案。

上面示例的问题(除了顶部缺少的代码,告诉我您的步骤的ID)是您需要单独查找向导的每个步骤中的控件。因此,如果您在向导的第一步中查找超链接,那么可以找到它:

TextBox HomeTown = (TextBox)UserSettings.WizardSteps[0].FindControl("HomeTown");

如果您不想假设使用HomeTown文本框的步骤始终是集合中的第一步,那么这将起作用:

WizardStep wizStep (WizardStep)wizSample.FindControl("SampleStepName");
TextBox HomeTown = (TextBox)wizStep.FindControl("HomeTown");

在我的情况下,我正在寻找的控件是在TemplatedWizardStep中,所以我不得不使用以下代码:

TemplatedWizardStep wizStep = (TemplatedWizardStep)wizSample.FindControl("SampleStepName");
Panel pnlSample =(Panel)wizStep.ContentTemplateContainer.FindControl("pnlSample");
pnlSample .Visible = true;

注意:我使用的是Wizard类,因为CreateUserWizard类基于向导,我认为上面的代码对两者都有效。