Button in custom webcontrol - event handler not called

G

Guest

Hello

This is my 1st project where I have to create a Webcontrol. I have created a simple custom control with a button and 2 labels added to a panel. My problem is that the event handler that I have assigned to the button [private void btnSubmit_Click()], is not getting invoked. Could anyone please go thru the code and let me know what I am missing here? Thanks in advance

My custom control is as follows

using System
using System.Web
using System.Web.UI
using System.Web.UI.WebControls
using System.ComponentModel
using System.Drawing

namespace WebControlLibrary

/// <summary
/// This WebControl simulates the rolling of a die. It consists of a label and a submit butto
/// encapsulated in a Panel. When the button is clicked, the event handler calls a metho
/// of the control - RollDice() to set the label with a random number between 1 and 6
/// When the Page is initialized, RollDice() is called in order to initialize the label wit
/// a value
/// </summary

public class WebCustomControl1 : System.Web.UI.WebControls.WebContro

int dice_num
Label lblNum = new Label()
Button btnSubmit = new Button()
Label lblComments = new Label()
Panel MainPanel = new Panel()

[Bindable(true)
Category("Appearance")
DefaultValue("")
public int DiceNu

ge

return dice_num

se

dice_num = value
if(dice_num > 0 && dice_num < 7
lblNum.Text = dice_num.ToString()



protected void RollDice(

Random rng = new Random(System.DateTime.Now.Millisecond)
dice_num = rng.Next(1,7)
lblNum.Text = dice_num.ToString()


protected override void OnInit(EventArgs e

base.OnInit (e)
// Subcribe to the submit button's Click even
btnSubmit.Text = "Submit"
lblNum.BackColor = Color.LightBlue
lblNum.Width = 30
lblComments.Text = "In OnInit()"
btnSubmit.Click +=new EventHandler(btnSubmit_Click)


protected override void CreateChildControls(

MainPanel.Controls.Add(lblNum)
MainPanel.Controls.Add(btnSubmit)
MainPanel.Controls.Add(lblComments)
Controls.Add(MainPanel)


/// <summary
/// Render this control to the output parameter specified
/// </summary
/// <param name="output"> The HTML writer to write out to </param
protected override void RenderContents(HtmlTextWriter output

AddAttributesToRender(output)
MainPanel.RenderControl(output)


private void btnSubmit_Click(object sender, EventArgs e

RollDice()
lblComments.Text += "In btnSubmit_Click()"




The aspx page that I am using to test this control is just a simple one
using System
using System.Collections
using System.ComponentModel
using System.Data
using System.Drawing
using System.Web
using System.Web.SessionState
using System.Web.UI
using System.Web.UI.WebControls
using System.Web.UI.HtmlControls

namespace WebCustomControlTes

/// <summary
/// Summary description for WebForm1
/// </summary
public class WebForm1 : System.Web.UI.Pag

protected WebControlLibrary1.WebCustomControl1 WebCustomControl11

private void Page_Load(object sender, System.EventArgs e

// Put user code to initialize the page her


#region Web Form Designer generated cod
override protected void OnInit(EventArgs e

/
// CODEGEN: This call is required by the ASP.NET Web Form Designer
/
InitializeComponent()
base.OnInit(e)


/// <summary
/// Required method for Designer support - do not modif
/// the contents of this method with the code editor
/// </summary
private void InitializeComponent(
{
this.Load += new System.EventHandler(this.Page_Load)


#endregio

}
 
V

Victor Garcia Aprea [MVP]

Hi Divya,

Please see my reply to your post @ the buildingcontrols ng

--
Victor Garcia Aprea
Microsoft MVP | ASP.NET
Looking for insights on ASP.NET? Read my blog:
http://obies.com/vga/blog.aspx
To contact me remove 'NOSPAM'. Please post all questions to the newsgroup

Divya said:
Hello,

This is my 1st project where I have to create a Webcontrol. I have created
a simple custom control with a button and 2 labels added to a panel. My
problem is that the event handler that I have assigned to the button
[private void btnSubmit_Click()], is not getting invoked. Could anyone
please go thru the code and let me know what I am missing here? Thanks in
advance!
My custom control is as follows -

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Drawing;

namespace WebControlLibrary1
{
/// <summary>
/// This WebControl simulates the rolling of a die. It consists of a label and a submit button
/// encapsulated in a Panel. When the button is clicked, the event handler calls a method
/// of the control - RollDice() to set the label with a random number between 1 and 6.
/// When the Page is initialized, RollDice() is called in order to initialize the label with
/// a value.
/// </summary>

public class WebCustomControl1 : System.Web.UI.WebControls.WebControl
{
int dice_num;
Label lblNum = new Label();
Button btnSubmit = new Button();
Label lblComments = new Label();
Panel MainPanel = new Panel();

[Bindable(true),
Category("Appearance"),
DefaultValue("")]
public int DiceNum
{
get
{
return dice_num;
}
set
{
dice_num = value;
if(dice_num > 0 && dice_num < 7)
lblNum.Text = dice_num.ToString();
}
}

protected void RollDice()
{
Random rng = new Random(System.DateTime.Now.Millisecond);
dice_num = rng.Next(1,7);
lblNum.Text = dice_num.ToString();
}

protected override void OnInit(EventArgs e)
{
base.OnInit (e);
// Subcribe to the submit button's Click event
btnSubmit.Text = "Submit";
lblNum.BackColor = Color.LightBlue;
lblNum.Width = 30;
lblComments.Text = "In OnInit()";
btnSubmit.Click +=new EventHandler(btnSubmit_Click);
}

protected override void CreateChildControls()
{
MainPanel.Controls.Add(lblNum);
MainPanel.Controls.Add(btnSubmit);
MainPanel.Controls.Add(lblComments);
Controls.Add(MainPanel);
}

/// <summary>
/// Render this control to the output parameter specified.
/// </summary>
/// <param name="output"> The HTML writer to write out to </param>
protected override void RenderContents(HtmlTextWriter output)
{
AddAttributesToRender(output);
MainPanel.RenderControl(output);
}

private void btnSubmit_Click(object sender, EventArgs e)
{
RollDice();
lblComments.Text += "In btnSubmit_Click()";
}
}
}

The aspx page that I am using to test this control is just a simple one -
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebCustomControlTest
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected WebControlLibrary1.WebCustomControl1 WebCustomControl11;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}
 

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,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top