Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Building Controls > Template control not displaying Container properties

Reply
Thread Tools

Template control not displaying Container properties

 
 
fusionmaster
Guest
Posts: n/a
 
      01-24-2006
I am trying to create a templated control for asp.net 2.0 using the example
found in the documentation, however when outputing <%# Container.Message %>
it always returns an empty string. Please help.


control code:

using System;
using System.Web;
using System.Web.UI;

namespace TemplateControlSamples
{

public class TemplateItem : Control, INamingContainer
{
private String _message = null;

public TemplateItem(String message)
{
_message = message;
}

public String Message
{

get
{
return _message;
}
set
{
_message = value;
}
}
}

[
ParseChildren(true)
]
public class Template1 : Control, INamingContainer
{

private ITemplate _messageTemplate = null;
private String _message = null;

public String Message
{

get
{
return _message;
}
set
{
_message = value;
}
}

[
PersistenceMode(PersistenceMode.InnerProperty),
TemplateContainer(typeof(TemplateItem))
]
public ITemplate MessageTemplate
{
get
{
return _messageTemplate;
}
set
{
_messageTemplate = value;
}
}

protected override void CreateChildControls()
{

// If a template has been specified, use it to create children.
// Otherwise, create a single literalcontrol with message value

if (_messageTemplate != null)
{
Controls.Clear();
TemplateItem i = new TemplateItem("this is a test");
_messageTemplate.InstantiateIn(i);
Controls.Add(i);
}
else
{
this.Controls.Add(new LiteralControl(this.Message));
}
}
}
}


asp code:

<%@ Register TagPrefix="test" Namespace="TemplateControlSamples" %>
<test:Template1 ID="Template1_1" Message="Hello World!" runat=server>
<MessageTemplate>
[<%# Container.Message %>]
</MessageTemplate>
</test:Template1>


the output to the browser is always []
it sould be [Hello World!]
 
Reply With Quote
 
 
 
 
Fredrik Örvill
Guest
Posts: n/a
 
      02-01-2006
You must do databind to get your databinding statements (<%# %>) to get
their values. After you add your Templated item to the page, do a
i.DataBind(). Like this:

if (_messageTemplate != null)
{
Controls.Clear();
TemplateItem i = new TemplateItem("this is a test");
_messageTemplate.InstantiateIn(i);
Controls.Add(i);
i.DataBind();
}
else
{
this.Controls.Add(new LiteralControl(this.Message));
}

regards
/Örvill

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
template template par used for a container statistic er C++ 1 09-05-2007 07:07 AM
Container.DataItem not displaying tshad ASP .Net 1 08-22-2005 04:33 PM
User Control - Accessing Properties from the Container Page Sumeet Mahajan ASP .Net Building Controls 0 03-02-2004 09:08 AM
std::container::iterator vs std::container::pointer Vivi Orunitia C++ 11 02-04-2004 08:09 AM
Not displaying public properties in the properties window KJ ASP .Net Web Controls 0 07-28-2003 03:56 PM



Advertisments
 



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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57