Ik ben bezig om een servercontrol te maken. Gewoon voor de experience maar het gaat niet helemaal zoals ik wil. Het bouwen van de MSPress.ServerControls.SimpleControl is kinderlijk eenvoudig maar ik wil het project uitbreiden er dus designtime laten zien hoe de control er uit komt te zien en dat je design-time properties kan instellen.
Ik heb inmiddels al gezien dat ik moet inheriten van System.Web.UI.WebControls.WebControl en dat ik de INamingContainer interface moet implementeren. Verder moet je bij je control nog een Designer bouwen en dan zou het e.e.a toch al moeten gaan werken echter als ik de gemodde control op het scherm sleep zie ik niet en de html is ook raar:
Ik had meer dit verwacht en een controlbox (zoals ook een usercontrol er uit ziet):
De code die ik heb en heel basic is maar toch al niet werkt is als volgt.
Dit zou volgens mij moeten werken maar omdat de control niet zichtbaar wordt in de design mode van mijn webform vermoedde ik al dat er iets niet goed was. Wanneer ik de webform start krijg ik deze foutmelding:
===================
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0011: Referenced class 'shdcms.CmsLibrary.SimpleControlDesigner' has base class or interface 'System.Web.UI.Design.ControlDesigner' defined in an assembly that is not referenced. You must add a reference to assembly 'System.Design'.
Source Error:
[No relevant source lines]
Source File: Line: 0
===================
Iemand al eens een webservercontrol gemaakt met een designer en dat properties designtime aan te passen zijn of ergen een url met een goed voorbeeld ? Zou geweldig geholpen zijn
EDIT:
Alle references zijn aanwezig en tijdens builden treden er geen fouten of warnings op
Ik heb inmiddels al gezien dat ik moet inheriten van System.Web.UI.WebControls.WebControl en dat ik de INamingContainer interface moet implementeren. Verder moet je bij je control nog een Designer bouwen en dan zou het e.e.a toch al moeten gaan werken echter als ik de gemodde control op het scherm sleep zie ik niet en de html is ook raar:
HTML:
1
| <CC1:SIMPLECONTROLDESIGNER runat="server"></CC1:SIMPLECONTROLDESIGNER> |
Ik had meer dit verwacht en een controlbox (zoals ook een usercontrol er uit ziet):
HTML:
1
2
| <CC1:SimpleControl id="SimpleControl1" propertya="a" propertyb="b" propertyc="etcetc" runat="server"></CC1:SIMPLECONTROLDESIGNER> |
De code die ik heb en heel basic is maar toch al niet werkt is als volgt.
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| [ Description("The simplecontrol prints simple text"), Designer(typeof(SimpleControlDesigner)), ToolboxData("<{0}:SimpleControlDesigner runat=\"server\"></{0}:SimpleControlDesigner>") ] // public class SimpleControl : System.Web.UI.WebControls.WebControl, INamingContainer { public SimpleControl() : base() { } protected override void Render(HtmlTextWriter writer) { writer.Write("I don't do anything useful,"); writer.Write("but at least I'm a control..."); } } public class SimpleControlDesigner : ControlDesigner { private SimpleControl simpleControl; public override string GetDesignTimeHtml() { return base.GetDesignTimeHtml (); } public override void Initialize(IComponent component) { base.Initialize(component); simpleControl = (SimpleControl) component; } } |
Dit zou volgens mij moeten werken maar omdat de control niet zichtbaar wordt in de design mode van mijn webform vermoedde ik al dat er iets niet goed was. Wanneer ik de webform start krijg ik deze foutmelding:
===================
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0011: Referenced class 'shdcms.CmsLibrary.SimpleControlDesigner' has base class or interface 'System.Web.UI.Design.ControlDesigner' defined in an assembly that is not referenced. You must add a reference to assembly 'System.Design'.
Source Error:
[No relevant source lines]
Source File: Line: 0
===================
Iemand al eens een webservercontrol gemaakt met een designer en dat properties designtime aan te passen zijn of ergen een url met een goed voorbeeld ? Zou geweldig geholpen zijn
EDIT:
Alle references zijn aanwezig en tijdens builden treden er geen fouten of warnings op
[ Voor 7% gewijzigd door shades op 16-09-2004 22:19 ]