![]() |
passing variables to a user control
Hi
I'm new to C#, moving from ASP, and slightly confused so bear with me! Basically I've got 4 pages, each of which runs the same user control (some header information). I want to be able to change the data in the user control based on the page (everything else would be duplicated, hence the user control). Anyway, i thought the easiest way would be to use a variable set in the Page_load event of the calling page. So I've got a variable defined in my page class as.. public int pageID = 1; However, when I try to access that from the user control, it says the variable is not defined in the namespace. What am i missing!?! Alternatively, I could use a URL object to get the page were on directly in the usercontrol, but I couldnt find a URL method/property to give me just the file name. Hope all that makes sense! Cheers Dan |
RE: passing variables to a user control
You should try to put a public property on your user control. In your html
code set your property. <uc1:UserControl id="MyControl" runat="server" MyPublicProp="1"></uc1:UserControl> If you want to do this from code, first, you should declare your user control in your page because visual studion didn't do this by default. it should look like this protected MyPath.To.Control.ControlName MyControl; after this you can acces your control properties normally.. MyControl.MyPublicProp ="1"; Cheers "Dan Nash" wrote: > Hi > > I'm new to C#, moving from ASP, and slightly confused so bear with me! > > Basically I've got 4 pages, each of which runs the same user control (some > header information). I want to be able to change the data in the user control > based on the page (everything else would be duplicated, hence the user > control). > > Anyway, i thought the easiest way would be to use a variable set in the > Page_load event of the calling page. So I've got a variable defined in my > page class as.. > > public int pageID = 1; > > However, when I try to access that from the user control, it says the > variable is not defined in the namespace. What am i missing!?! > > Alternatively, I could use a URL object to get the page were on directly in > the usercontrol, but I couldnt find a URL method/property to give me just the > file name. > > Hope all that makes sense! > > Cheers > > > Dan > > |
Re: passing variables to a user control
Hi,
Create an interface. eg: public interface ICommonPage { int PageID{get;} } then implement it in the classes that contain the usercontrol in question like this: public class page1 : System.Web.UI.Page, ICommonPage { //Hardcode the value in a field: int _PageID = 1; // or 2 in page2, 3 in page3, etc. // The actual implementation: public ICommonPage.PageID { get{return _PageID;} } // the rest of the class as it is... } And finally in the usercontrol cast the Page property to the interface and get the value: int PageID = ((ICommonPage)Page).PageID; // work with PageID... Hope this helps Martin "Dan Nash" <dan@musoswire.co.uk> wrote in message news:1D302C45-765A-46AE-AB82-631BB104CB6A@microsoft.com... > Hi > > I'm new to C#, moving from ASP, and slightly confused so bear with me! > > Basically I've got 4 pages, each of which runs the same user control (some > header information). I want to be able to change the data in the user control > based on the page (everything else would be duplicated, hence the user > control). > > Anyway, i thought the easiest way would be to use a variable set in the > Page_load event of the calling page. So I've got a variable defined in my > page class as.. > > public int pageID = 1; > > However, when I try to access that from the user control, it says the > variable is not defined in the namespace. What am i missing!?! > > Alternatively, I could use a URL object to get the page were on directly in > the usercontrol, but I couldnt find a URL method/property to give me just the > file name. > > Hope all that makes sense! > > Cheers > > > Dan > > |
RE: passing variables to a user control
Thanks guys!
Psychos post solved it, I guess you would say, the easy way! However, Martin's solution looks interesting.. might try that one when I know a bit more about C# (only got it Friday!). Would there be any advantage with ICommonPage over the second method that Psycho suggested? Cheers guys Dan "Dan Nash" wrote: > Hi > > I'm new to C#, moving from ASP, and slightly confused so bear with me! > > Basically I've got 4 pages, each of which runs the same user control (some > header information). I want to be able to change the data in the user control > based on the page (everything else would be duplicated, hence the user > control). > > Anyway, i thought the easiest way would be to use a variable set in the > Page_load event of the calling page. So I've got a variable defined in my > page class as.. > > public int pageID = 1; > > However, when I try to access that from the user control, it says the > variable is not defined in the namespace. What am i missing!?! > > Alternatively, I could use a URL object to get the page were on directly in > the usercontrol, but I couldnt find a URL method/property to give me just the > file name. > > Hope all that makes sense! > > Cheers > > > Dan > > |
| All times are GMT. The time now is 10:47 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.