FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister  MasterVB.NET
Visual Basic 2005 .NET Forum
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
Events not firing in templated control
 
Post new topic   Reply to topic    MasterVB.NET Forum Index -> XML Web Service
View previous topic :: View next topic  
Message
Author
Mike
Newbie
Joined: 15 Jul 2006
Posts: 1

PostPosted: Sat Jul 15, 2006 1:00 pm    
Post subject: Events not firing in templated control
Reply with quote

Hi. I can't figure out why a button's click event is not firing in a templated control I've created (first time I've tried creating one).
Please can someone help? On a point of lesser importance, how can I get the designer to realise that my control can contain markup?

This is all ASP.Net v 2.0

This is my default.aspx:

Below is the source of three files: Default.aspx, Default.aspx.cs and TemplateContainer.cs which will demonstrate the problem.

You will notice that in the btnEdit_Click event I raise a NotImplementedException - this exception is never thrown. Why is the button losing the event wireup?

TIA


Default:aspx
============
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="tc" Namespace="Controls.Templated" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<tc:TemplatedControl ID="tc" runat="server">
<ItemTemplate>
<asp:Button ID="btnEdit" Text="Edit" runat="server"
OnClick="btnEdit_Click" />
</ItemTemplate>
<EditItemTemplate>
<asp:Button ID="btnCancel" Text="Cancel" runat="server"
OnClick="btnCancel_Click" />
</EditItemTemplate>
</tc:TemplatedControl>

</div>
</form>
</body>
</html>


Default.aspx.cs
===========
using System;
using System.Web.UI;
using Controls.Templated;

public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
tc.ChangeMode(TemplateMode.ReadOnly);

}

protected void btnEdit_Click(object sender, EventArgs e)
{
throw new NotImplementedException("Not implemented");
}

protected void btnCancel_Click(object sender, EventArgs e)
{
throw new NotImplementedException("Not implemented");
}
}


TemplateContainer.cs
===============
using System;
using System.Web;
using System.Web.UI;

namespace Controls.Templated
{
public class TemplateContainer : Control, INamingContainer
{
private TemplatedControl parent;
public TemplateContainer(TemplatedControl parent)
{
this.parent = parent;
}

public string MyValue
{
get
{
return parent.MyValue;
}
}
}

public enum TemplateMode
{
Invisible,
Edit,
Insert,
ReadOnly
}

[
ParseChildren(ChildrenAsProperties = true),
]
public class TemplatedControl : Control, INamingContainer
{
private ITemplate m_itemTemplate;
private ITemplate m_editTemplate;
private string m_myValue = null;
private Control m_itemTemplateContainer;
private Control m_editItemTemplateContainer;
private TemplateMode m_mode;

protected override void OnDataBinding(EventArgs e)
{
EnsureChildControls();
base.OnDataBinding(e);
}

public void ChangeMode(TemplateMode newMode)
{
m_mode = newMode;
}

[TemplateContainer(typeof(TemplateContainer))]
public ITemplate ItemTemplate
{
get
{
return m_itemTemplate;
}
set
{
m_itemTemplate = value;
}
}

[TemplateContainer(typeof(TemplateContainer))]
public ITemplate EditItemTemplate
{
get
{
return m_editTemplate;
}
set
{
m_editTemplate = value;
}
}

public string MyValue
{
get
{
return m_myValue;
}
set
{
m_myValue = value;
}
}

public Control ItemTemplateContainer
{
get
{
return m_itemTemplateContainer;
}
}

public Control EditItemTemplateContainer
{
get
{
return m_editItemTemplateContainer;
}
}

protected override void CreateChildControls()
{
if (ItemTemplate != null && m_mode ==
TemplateMode.ReadOnly)
{
m_itemTemplateContainer = new TemplateContainer(this);
ItemTemplate.InstantiateIn(m_itemTemplateContainer);
Controls.Add(m_itemTemplateContainer);
}
else if (EditItemTemplate != null && m_mode ==
TemplateMode.Edit)
{
m_editItemTemplateContainer = new TemplateContainer(this);

EditItemTemplate.InstantiateIn(m_editItemTemplateContainer);
Controls.Add(m_editItemTemplateContainer);
}
}

}

}



 

Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    MasterVB.NET Forum Index -> XML Web Service All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Archieve

Powered by phpBB © 2001, 2002 phpBB Group, used in Visual Basic 2005 .NET Forum

| Visual Basic .NET Forum | Online Recipe Archiver | Shareware Freeware PAD | Lowongan Kerja | Kamus Online | Health Supply | Digital Camera Review |
Orang Paling Keren

RSS