JP Hellemons Building E-commerce web applications

Access control value from a usercontrol

7. August 2012 17:15by jphellemons in C#

I stepped trough several lines of code towards a line where a bug occurred and encountered a horrible line of code. I had doubts if I should share it. It is really bad and unreliable. But I will share it so that other developers will never make this mistake.

int step = ((Wizard)Page.Controls[0].Controls[3].Controls[7].Controls[1].Controls[1]).ActiveStepIndex;

Believe it or not, this has worked for several years! It was used inside a usercontrol to access a parameter of a control on the page which contains the usercontrol.

Why I love refactoring

You will see why when you look at the code. I have made a public property on the page which has the wizard control and the usercontrol.

public int Step
{
get { return CheckoutWizard.ActiveStepIndex; }
}

In the code behind of the usercontrol, you only need one line to get the current index of the wizard control:

int step = ((Page_Checkout)Page).Step;

And that’s it! This is the best way to access a property of a control on the page which holds the usercontrol. By the way, you can also give the usercontrol a property and fill it from within the page.

The world is a better place now with this refactored line.

Good luck coding!

and yes, you can always flattr me.

kick it on DotNetKicks.com Shout it

Share or Bookmark this post…
  • del.icio.us
  • Digg
  • DotNetKicks
  • eKudos
  • E-Mail
  • Facebook
  • Google
  • LinkedIn
  • msdn Social
  • Reddit
  • NuJIJ
  • Slashdot
  • TwitThis
  • StumbleUpon

Pingbacks and trackbacks (1)+

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading