Dynamic Datagrid does not fire events.

  • Thread starter Thread starter Mark
  • Start date Start date
M

Mark

I have been working for quite some time on this issue which in theory
should be quite simple. The problem is that the Cancel and Save
events are not fired when their respective buttons are clicked.

I have read several posts which say to put your column generating
section in the Page_Init section and it will solve the
problem....however, it hasn't solved mine.

Can somebody please take a look at this and provide any insight if
possible?

Thanks,
Mark




Imports System
Imports System.Data
Imports System.Data.OleDb

Public Class DynaGrid

Inherits System.Web.UI.Page
Protected WithEvents plcData As
System.Web.UI.WebControls.PlaceHolder
Protected WithEvents dgData As New
System.Web.UI.WebControls.DataGrid()

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub

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.
BindData()
InitializeComponent()
End Sub

#End Region


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs)

End Sub


Sub BindData()
Dim dbConn As New OleDbConnection()
dbConn.ConnectionString =
"provider=sqloledb;Server=SERVERNAME;Database=User;UID=USERID;PWD=PASSWORD"
Dim oAdapter As New OleDbDataAdapter("SELECT * FROM T_Group ",
dbConn)
Dim dsData As New DataSet()
oAdapter.Fill(dsData)

dgData.AllowPaging = False
dgData.AllowSorting = False
dgData.AutoGenerateColumns = False
'dgData.EnableViewState = False

Dim x As Integer
For x = 0 To dsData.Tables(0).Columns.Count - 1
Dim bcCol As New BoundColumn()
bcCol.HeaderText = dsData.Tables(0).Columns(x).ColumnName
bcCol.DataField = dsData.Tables(0).Columns(x).Caption
dgData.Columns.Add(bcCol)
bcCol = Nothing
Next

Dim bcEdit As New EditCommandColumn()
bcEdit.ButtonType = ButtonColumnType.PushButton
bcEdit.EditText = "Edit"
bcEdit.CancelText = "Cancel"
bcEdit.UpdateText = "Save"
dgData.Columns.Add(bcEdit)
bcEdit = Nothing

dgData.DataSource = dsData.Tables(0)
dgData.DataBind()

AddHandler dgData.CancelCommand, AddressOf dgData_cmdCancel
AddHandler dgData.EditCommand, AddressOf dgData_cmdEdit

plcData.Controls.Add(dgData)
End Sub


Sub dgData_cmdSave(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs)
dgData.EditItemIndex = -1
Response.Write(e.CommandName)
dgData.DataBind()
End Sub


Sub dgData_cmdCancel(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs)
dgData.EditItemIndex = -1
Response.Write(e.CommandName)
dgData.DataBind()
End Sub


Sub dgData_cmdEdit(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs)
dgData.EditItemIndex = CInt(e.Item.ItemIndex)
Response.Write(e.CommandName)
dgData.DataBind()
End Sub
End Class
 
Mark,

Make sure that viewstate is on and that the grid is recreated every page
load.

If these two things are done it should be working.

If you'd like me to take a look at the code post it and I'll see if I can
get it to work.

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
 
I did post the code.


S. Justin Gengo said:
Mark,

Make sure that viewstate is on and that the grid is recreated every page
load.

If these two things are done it should be working.

If you'd like me to take a look at the code post it and I'll see if I can
get it to work.

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche

"provider=sqloledb;Server=SERVERNAME;Database=User;UID=USERID;PWD=PASSWORD"
 
Mark,

Sorry I just wasn't specific. I'll chalk up my lack of presenting a logical
request to the amount of sleep I had at the time. :)

Could you please also post the designer's code. Then I can recreate the
entire page and take a look.

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
 
Justin,

I appreciate you taking a look at this.

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="DynaGrid.aspx.vb"
Inherits="MMDG.DynaGrid"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>DynaGrid</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:PlaceHolder ID="plcData" Runat="server"></asp:PlaceHolder>
</form>
</body>
</HTML>
 
Mark,

It took a little while of playing to get it to work, but as it turns out all
I did was move the Call BindData() statement which is in the Page_Init sub
so that it is below the call to: InitializeComponent

(I should have seen it without recreating everything!)

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()

Call BindData()

End Sub

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
 
Mark,

Everything seems to be working for me. I would suggest however that you look
into creating your datagrid in a user control and add the user control to
the page dynamically. That way a lot of the page rendering and post back
event handlers are created for you.

Take a look at the code I offer on my website: www.aboutfortunate.com on
placing user control's on a page dynamically. It should get you started.

Just search for: Dynamic User Controls

I hope this helps.

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
 
Back
Top