Hi All.
I'm trying to create a composite control. At the moment it is just a test so I have the composite control which contains a normal datagrid.
What I need to know is, from the custom control, how do I fire an OnItemCreated Event in the code behind file for the webform that the control is in.
Also, How do I pass in DatagridEventArgs to this Method.
I have attached the code I have so far.
Any help would be greatly appreciated.
Thanks.
=== COMPOSITE CONTROL ================================================
Imports System.ComponentModel
Imports System.Web.UI
Public Class BKDG
Inherits System.Web.UI.WebControls.WebControl
Implements INamingContainer
Dim DG1 As New WebControls.DataGrid
Public Property BKDataGrid() As WebControls.DataGrid
Get
Return DG1
End Get
Set(ByVal Value As WebControls.DataGrid)
DG1 = Value
End Set
End Property
Protected Overrides Sub CreateChildControls()
Controls.Add(DG1)
End Sub
Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
output.Write("<table cellpadding=0 cellspacing=0 border=0>")
output.Write("<tr>")
output.RenderBeginTag("td")
BKDataGrid.RenderControl(output)
output.RenderEndTag()
output.Write("</tr>")
output.Write("</table>")
End Sub
End Class
=== CODEBEHIND FILE ==================================================
Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Dim DB As New Database
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents MasterGrid As New BKControl.BKDG
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
MasterGrid.BKDataGrid.DataSource = DB.getDataSet("SELECT * FROM person")
MasterGrid.BKDataGrid.DataBind()
End Sub
Public Sub SetLabel(ByVal Sender As Object, ByVal E As EventArgs)
Label1.Text = "THIS WORKS"
End Sub
End Class
=== WEB FORM ================================================== =======
<%@Register TagPrefix="BK" NameSpace="BKControl" Assembly="BKControl" %>
<%@ Page Language="
vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.
vb" Inherits="BKControlTest.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<BK:BKDG id="MasterGrid" runat="server" OnItemCreated="SetLabel" />
<asp:Label id="Label1" runat="server"></asp:Label>
</form>
</body>
</HTML>