Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Web Custom Control - Datagrid Event Handling Problem

Reply
Thread Tools

Web Custom Control - Datagrid Event Handling Problem

 
 
The Alchemist
Guest
Posts: n/a
 
      06-07-2004
I am having a problem with a dynamically-generated Datagrid. It is
important to point out that this problem does not exist with a
design-time created Datagrid, but only with a dynamically generated
Datagrid in a Web Custom Control (WCC) :

The datagrid has LinkButton Column which has a select LinkButton for
each row. When this button is clicked, the Datagrid raises its
'ItemCommand' event which captures the information for that row and
sends it to a event handler method. The problem is that this method is
never getting called. It seems logical to assume that there is
something wrong with the event-wiring of the datagrid. The signature
of the event-handler is:

Private Sub DataGrid1_SelectedIndexChanged(ByVal source As Object,
ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles
dg.ItemCommand

(dg is the name of the datagrid). The 'Handles' keyword in VB.Net is
supposed to wire the event to the handler but that is not happening.
So I tried to manually add the handler to the event with the following
line of code in the CreateChildControls method of the WCC using the
line:

AddHandler dg.ItemCommand, AddressOf Me.DataGrid1_SelectedIndexChanged

That does not work either. The datagrid loads up just fine, and on
selecting a row it does a PostBack and hits the OnLoad event but never
hits the event-handler method.

Why is this event not being wired to the handler? Or might there be
some other problem?

Thanks in advance for any help.



BZ
 
Reply With Quote
 
 
 
 
Raterus
Guest
Posts: n/a
 
      06-07-2004
Please don't crosspost, this post has no business in these forums as it has nothing to do with VB or VB's controls.

microsoft.public.dotnet.languages.vb,
microsoft.public.dotnet.languages.vb.controls

I'll be nice though and answer your question, you haven't re-instantiated your datagrid in page_load of the postbacked page, and given it the same ID as the previous page had.

"The Alchemist" <(E-Mail Removed)> wrote in message news:(E-Mail Removed) om...
> I am having a problem with a dynamically-generated Datagrid. It is
> important to point out that this problem does not exist with a
> design-time created Datagrid, but only with a dynamically generated
> Datagrid in a Web Custom Control (WCC) :
>
> The datagrid has LinkButton Column which has a select LinkButton for
> each row. When this button is clicked, the Datagrid raises its
> 'ItemCommand' event which captures the information for that row and
> sends it to a event handler method. The problem is that this method is
> never getting called. It seems logical to assume that there is
> something wrong with the event-wiring of the datagrid. The signature
> of the event-handler is:
>
> Private Sub DataGrid1_SelectedIndexChanged(ByVal source As Object,
> ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles
> dg.ItemCommand
>
> (dg is the name of the datagrid). The 'Handles' keyword in VB.Net is
> supposed to wire the event to the handler but that is not happening.
> So I tried to manually add the handler to the event with the following
> line of code in the CreateChildControls method of the WCC using the
> line:
>
> AddHandler dg.ItemCommand, AddressOf Me.DataGrid1_SelectedIndexChanged
>
> That does not work either. The datagrid loads up just fine, and on
> selecting a row it does a PostBack and hits the OnLoad event but never
> hits the event-handler method.
>
> Why is this event not being wired to the handler? Or might there be
> some other problem?
>
> Thanks in advance for any help.
>
>
>
> BZ

 
Reply With Quote
 
 
 
 
The Alchemist
Guest
Posts: n/a
 
      06-08-2004
"Raterus" <(E-Mail Removed)> wrote in message news:<u#(E-Mail Removed)>...
> Please don't crosspost, this post has no business in these forums as it
> has nothing to do with VB or VB's controls.
>
> microsoft.public.dotnet.languages.vb,
> microsoft.public.dotnet.languages.vb.controls


This control is written in VB.Net, how can it not be relevant to these
groups?

>
> I'll be nice though and answer your question, you haven't
> re-instantiated your datagrid in page load of the postbacked page, and
> given it the same ID as the previous page had.


Yes I did and it does not not work.

I am posting the code below, any help would be MUCH appreciated.


Imports System.ComponentModel
Imports System.Web.UI
Imports System.web.UI.WebControls

<DefaultProperty("Text"), ToolboxData("<{0}:WebCustomControl1
runat=server></{0}:WebCustomControl1>")> Public Class
WebCustomControl1
Inherits System.Web.UI.WebControls.WebControl

Protected WithEvents dg As DataGrid


Protected Overrides Sub Render(ByVal output As
System.Web.UI.HtmlTextWriter)

Dim DataTable As New DataTable

Dim col As New DataColumn
col.ColumnName = "Last Name"
DataTable.Columns.Add(col)
Dim col2 As New DataColumn
col2.ColumnName = "First Name"
DataTable.Columns.Add(col2)
Dim col3 As New DataColumn
col3.ColumnName = "Level"
DataTable.Columns.Add(col3)

Dim selectColumn As New ButtonColumn
selectColumn.ButtonType = ButtonColumnType.LinkButton
selectColumn.CommandName = "select"
selectColumn.Text = "select"

dg.Columns.Add(selectColumn)

Dim row As DataRow
row = DataTable.NewRow
row.Item(0) = "Smith"
row.Item(1) = "John"
row.Item(2) = "Level 1"
DataTable.Rows.Add(row)

row = DataTable.NewRow
row.Item(0) = "Jones"
row.Item(1) = "Mary"
row.Item(2) = "Level 2"
DataTable.Rows.Add(row)

dg.DataSource = DataTable
dg.DataBind()
dg.RenderControl(output)


End Sub


Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)

dg = New DataGrid
dg.BackColor = System.Drawing.Color.Red
dg.ID = "testID"
'I tried the following line instead of using the handles
keyword and that didnt work either:
'AddHandler dg.ItemCommand, AddressOf
Me.DataGrid1_SelectedIndexChanged
Controls.Add(dg)

End Sub

'Public Sub bz()

Private Sub DataGrid1_SelectedIndexChanged(ByVal source As Object,
ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles
dg.ItemCommand

Debug.WriteLine("The event handler has been called.")

End Sub

End Class







>
> "The Alchemist" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) om...
> > I am having a problem with a dynamically-generated Datagrid. It is
> > important to point out that this problem does not exist with a
> > design-time created Datagrid, but only with a dynamically generated
> > Datagrid in a Web Custom Control (WCC) :
> >
> > The datagrid has LinkButton Column which has a select LinkButton for
> > each row. When this button is clicked, the Datagrid raises its
> > 'ItemCommand' event which captures the information for that row and
> > sends it to a event handler method. The problem is that this method is
> > never getting called. It seems logical to assume that there is
> > something wrong with the event-wiring of the datagrid. The signature
> > of the event-handler is:
> >
> > Private Sub DataGrid1 SelectedIndexChanged(ByVal source As Object,
> > ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles
> > dg.ItemCommand
> >
> > (dg is the name of the datagrid). The 'Handles' keyword in VB.Net is
> > supposed to wire the event to the handler but that is not happening.
> > So I tried to manually add the handler to the event with the following
> > line of code in the CreateChildControls method of the WCC using the
> > line:
> >
> > AddHandler dg.ItemCommand, AddressOf Me.DataGrid1 SelectedIndexChanged
> >
> > That does not work either. The datagrid loads up just fine, and on
> > selecting a row it does a PostBack and hits the OnLoad event but never
> > hits the event-handler method.
> >
> > Why is this event not being wired to the handler? Or might there be
> > some other problem?
> >
> > Thanks in advance for any help.
> >
> >
> >
> > BZ

 
Reply With Quote
 
John Saunders
Guest
Posts: n/a
 
      06-08-2004
"The Alchemist" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) m...
> "Raterus" <(E-Mail Removed)> wrote in message

news:<u#(E-Mail Removed)>...
> > I'll be nice though and answer your question, you haven't
> > re-instantiated your datagrid in page load of the postbacked page, and
> > given it the same ID as the previous page had.

>
> Yes I did and it does not not work.
>
> I am posting the code below, any help would be MUCH appreciated.
>
>
> Imports System.ComponentModel
> Imports System.Web.UI
> Imports System.web.UI.WebControls
>
> <DefaultProperty("Text"), ToolboxData("<{0}:WebCustomControl1
> runat=server></{0}:WebCustomControl1>")> Public Class
> WebCustomControl1
> Inherits System.Web.UI.WebControls.WebControl
>
> Protected WithEvents dg As DataGrid
> Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
>
> dg = New DataGrid
> dg.BackColor = System.Drawing.Color.Red
> dg.ID = "testID"
> 'I tried the following line instead of using the handles
> keyword and that didnt work either:
> 'AddHandler dg.ItemCommand, AddressOf
> Me.DataGrid1_SelectedIndexChanged
> Controls.Add(dg)
>
> End Sub


How about MyBase.OnLoad(e)
--
John Saunders
johnwsaundersiii at hotmail


 
Reply With Quote
 
Mircea Pleteriu
Guest
Posts: n/a
 
      06-23-2004
Hi,

I am experiencing the same problem as you are.
Have you got any solution?

"The Alchemist" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) om...
> I am having a problem with a dynamically-generated Datagrid. It is
> important to point out that this problem does not exist with a
> design-time created Datagrid, but only with a dynamically generated
> Datagrid in a Web Custom Control (WCC) :
>
> The datagrid has LinkButton Column which has a select LinkButton for
> each row. When this button is clicked, the Datagrid raises its
> 'ItemCommand' event which captures the information for that row and
> sends it to a event handler method. The problem is that this method is
> never getting called. It seems logical to assume that there is
> something wrong with the event-wiring of the datagrid. The signature
> of the event-handler is:
>
> Private Sub DataGrid1_SelectedIndexChanged(ByVal source As Object,
> ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles
> dg.ItemCommand
>
> (dg is the name of the datagrid). The 'Handles' keyword in VB.Net is
> supposed to wire the event to the handler but that is not happening.
> So I tried to manually add the handler to the event with the following
> line of code in the CreateChildControls method of the WCC using the
> line:
>
> AddHandler dg.ItemCommand, AddressOf Me.DataGrid1_SelectedIndexChanged
>
> That does not work either. The datagrid loads up just fine, and on
> selecting a row it does a PostBack and hits the OnLoad event but never
> hits the event-handler method.
>
> Why is this event not being wired to the handler? Or might there be
> some other problem?
>
> Thanks in advance for any help.
>
>
>
> BZ



 
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
Custom event from a custom web control is fired twice SammyBar ASP .Net Web Controls 1 07-21-2009 07:16 PM
Custom event from a custom web control is fired twice SammyBar ASP .Net 1 07-21-2009 07:16 PM
Capturing event from other custom control within another custom control Jonah Olsson ASP .Net 1 04-05-2005 01:39 PM
Capturing event from other custom control within another custom control Jonah Olsson ASP .Net Web Controls 2 04-05-2005 12:56 PM
Web Custom Control - Datagrid Event Handling Problem The Alchemist ASP .Net Web Controls 4 06-23-2004 03:07 PM



Advertisments