Itemplate sample : Access controls on postback

  • Thread starter Luhar Powell via .NET 247
  • Start date
L

Luhar Powell via .NET 247

How to access other controls values in ITemplate?
Hi,

I have simple Itemplate implementation with 2 textboxes and button.
On postback I would like to access values entered by user in the textbox controls.

The Itemplate sample below has two text boxes for first name and last name. There is Ok button that will do process first name and last name entered by the user.

Thanks,
Luhar



<%@ Page %>
<%@ Register TagPrefix="TemplateControlSamples" Namespace="TemplateControlSamples" Assembly="TemplateControlSamples" %>
<script runat=server language=c#>
void Page_Load()
{
DataBind();
}
public void ButtonOK_Click(object sender, System.EventArgs e)
{
Response.Write("Button Ok clicked");
//Call some function with firstname and last name entered by user?
//How do i get access to first name and last name?
}
</script>

<html>

<body>

<form method="POST" runat="server">

Non Templated version:

<TemplateControlSamples:Template1 Message="Hello World!" runat=server/>

<hr>

Templated version:<br>

<TemplateControlSamples:Template1 Message="Hello World!" runat=server>
<MessageTemplate>
<b><i><u>
<%# Container.Message %>
<asp:textbox id=TextBoxFirstName runat="server" NAME="Textbox1"></asp:TextBox><br>
<asp:textbox id=TextBoxLastName runat="server" NAME="Textbox2"></asp:TextBox><br>
<asp:button id=ButtonOK onclick=ButtonOk_Click Text="Ok" Runat="server"></asp:Button>
</u></i></b>
</MessageTemplate>
</TemplateControlSamples:Template1>

</form>

</body>

</html>

/*******************************************************/
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;
}
}

public override void DataBind()
{
EnsureChildControls();
base.DataBind();
}


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.Message);
MessageTemplate.InstantiateIn(i);

Controls.Add(i);
}
else
{
this.Controls.Add(new LiteralControl(this.Message));
}
}
}
}
 
B

Brock Allen

Use YourTemplateControl.FindControl("Textbox1") or if your template is a
data binding control then you'd need to access the row in your template control
then call FindControl("Textbox1") on that.




How to access other controls values in ITemplate? Hi,

I have simple Itemplate implementation with 2 textboxes and button. On
postback I would like to access values entered by user in the textbox
controls.

The Itemplate sample below has two text boxes for first name and last
name. There is Ok button that will do process first name and last name
entered by the user.

Thanks, Luhar

<%@ Page %>
<%@ Register TagPrefix="TemplateControlSamples"
Namespace="TemplateControlSamples" Assembly="TemplateControlSamples"
%>
<script runat=server language=c#>
void Page_Load()
{
DataBind();
}
public void ButtonOK_Click(object sender, System.EventArgs e)
{
Response.Write("Button Ok clicked");
//Call some function with firstname and last name entered by user?
//How do i get access to first name and last name?
}
</script>
<html>

<body>

<form method="POST" runat="server">

Non Templated version:

<TemplateControlSamples:Template1 Message="Hello World!"
runat=server/>

<hr>

Templated version:<br>

<TemplateControlSamples:Template1 Message="Hello World!"
runat=server>
<MessageTemplate>
<b><i><u>
<%# Container.Message %>
<asp:textbox id=TextBoxFirstName runat="server"
NAME="Textbox1"></asp:TextBox><br>
<asp:textbox id=TextBoxLastName runat="server"
NAME="Textbox2"></asp:TextBox><br>
<asp:button id=ButtonOK onclick=ButtonOk_Click
Text="Ok" Runat="server"></asp:Button>
</u></i></b>
</MessageTemplate>
</TemplateControlSamples:Template1>
</form>

</body>

</html>

/*******************************************************/ 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; } }

public override void DataBind() { EnsureChildControls();
base.DataBind(); }

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.Message); MessageTemplate.InstantiateIn(i);

Controls.Add(i); } else { this.Controls.Add(new
LiteralControl(this.Message)); } } } }
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,040
Latest member
papereejit

Latest Threads

Top