R
rsaffy
I am having trouble with my dynamically created button's event
handling. I read that the buttons need to be recreated on every trip
to the server, but how exactly do you do that when the datagrid the
button is added to is created at run time?
here is code from my aspx page...
-------------------------------------------------------------------------------------
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Search Page</title>
<script runat="server">
Sub GreetingBtn_Click(ByVal sender As Object, _
ByVal e As EventArgs)
' When the button is clicked,
' change the button text, and disable it.
Dim clickedButton As Button = sender
clickedButton.Text = "...button clicked..."
clickedButton.Enabled = False
' Display the greeting label text.
'GreetingLabel.Visible = True
End Sub
</script>
</head>
here is code where I generate my datagrid...
-------------------------------------------------------------------------------------
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSearch.Click
Dim sSql As String
Dim nReturn As Integer
Dim sReturnMessage As String
Dim b As New SAT_BIZ_FolderSearch
Dim d As New SAT_DATA.DataObject
Dim dt As New Data.DataTable
' need to search...
sSql = ""
sReturnMessage = ""
nReturn = b.BuildCustSearchSql(sSql,
radioSearchType.SelectedItem.Text, txtSearch.Text)
If nReturn <> 0 Then
lblMessageArea.Text = nReturn & ": " & sReturnMessage
Else
pPlaceHolder.Controls.Clear()
lblMessageArea.Text = sSql
d.SetConnectionString(g_sConnString)
dt = d.GetDataTable(sSql, nReturn, sReturnMessage)
If nReturn <> 0 Then
lblMessageArea.Text = lblMessageArea.Text & nReturn &
": " & sReturnMessage
End If
datagridSearchResults.DataSource = dt
datagridSearchResults.DataBind()
End If
b = Nothing
d = Nothing
dt = Nothing
End Sub
here is code where I generate the row contents for my datagrid...
-------------------------------------------------------------------------------------
Private Sub datagridSearchResults_ItemDataBound(ByVal sender As
Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
Handles datagridSearchResults.ItemDataBound
Dim i As Integer
Dim btnFilePath As Button
Select Case e.Item.ItemType()
Case ListItemType.Header
' FORMAT THE DATAGRID HEADER HERE..
For i = 0 To e.Item.Cells.Count - 1
arrGridFieldName.SetValue(e.Item.Cells(i).Text.ToString, i)
Select Case e.Item.Cells(i).Text.ToString
Case "COMPANY_NAME"
arrGridColumnHeader.SetValue("Company
Name", i)
Case "CUST_ACCT_NBR"
arrGridColumnHeader.SetValue("Customer
Account", i)
Case "PROSPECT_ID"
arrGridColumnHeader.SetValue("Prospect ID",
i)
Case "PROPOSAL_ID"
arrGridColumnHeader.SetValue("Proposal ID",
i)
Case "BTN"
arrGridColumnHeader.SetValue("BTN", i)
Case "CITY_NAME"
arrGridColumnHeader.SetValue("City", i)
Case "STATE_CODE"
arrGridColumnHeader.SetValue("State", i)
Case "CUST_PATH"
arrGridColumnHeader.SetValue("Customer
Folder", i)
Case "SALES_PATH"
arrGridColumnHeader.SetValue("Sales
Folder", i)
Case Else
arrGridColumnHeader.SetValue(e.Item.Cells(i).Text, i)
End Select
' replace the oracle field name with what we just
put in the array...
e.Item.Cells(i).Text =
arrGridColumnHeader(i).ToString
e.Item.BackColor = Drawing.Color.HotPink
Next
Case ListItemType.Item, ListItemType.AlternatingItem
' FORMAT THE DATAGRID DETAILS HERE..
For i = 0 To e.Item.Cells.Count - 1
If arrGridFieldName(i).ToString() = "CUST_PATH"
Then
If e.Item.Cells(i).Text() = "0" Then
e.Item.Cells(i).Text() = ""
Else
btnFilePath = New Button
btnFilePath.Text = "OPEN"
btnFilePath.ID = "GreetingBtn"
btnFilePath.CommandName = "OPEN_CUST_PATH"
btnFilePath.CommandArgument =
e.Item.Cells(i).Text()
btnFilePath.OnClientClick = "return
confirm('Ready to Submit');"
e.Item.Cells(i).Controls.Add(btnFilePath)
End If
End If
Next
End Select
End Sub
handling. I read that the buttons need to be recreated on every trip
to the server, but how exactly do you do that when the datagrid the
button is added to is created at run time?
here is code from my aspx page...
-------------------------------------------------------------------------------------
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Search Page</title>
<script runat="server">
Sub GreetingBtn_Click(ByVal sender As Object, _
ByVal e As EventArgs)
' When the button is clicked,
' change the button text, and disable it.
Dim clickedButton As Button = sender
clickedButton.Text = "...button clicked..."
clickedButton.Enabled = False
' Display the greeting label text.
'GreetingLabel.Visible = True
End Sub
</script>
</head>
here is code where I generate my datagrid...
-------------------------------------------------------------------------------------
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSearch.Click
Dim sSql As String
Dim nReturn As Integer
Dim sReturnMessage As String
Dim b As New SAT_BIZ_FolderSearch
Dim d As New SAT_DATA.DataObject
Dim dt As New Data.DataTable
' need to search...
sSql = ""
sReturnMessage = ""
nReturn = b.BuildCustSearchSql(sSql,
radioSearchType.SelectedItem.Text, txtSearch.Text)
If nReturn <> 0 Then
lblMessageArea.Text = nReturn & ": " & sReturnMessage
Else
pPlaceHolder.Controls.Clear()
lblMessageArea.Text = sSql
d.SetConnectionString(g_sConnString)
dt = d.GetDataTable(sSql, nReturn, sReturnMessage)
If nReturn <> 0 Then
lblMessageArea.Text = lblMessageArea.Text & nReturn &
": " & sReturnMessage
End If
datagridSearchResults.DataSource = dt
datagridSearchResults.DataBind()
End If
b = Nothing
d = Nothing
dt = Nothing
End Sub
here is code where I generate the row contents for my datagrid...
-------------------------------------------------------------------------------------
Private Sub datagridSearchResults_ItemDataBound(ByVal sender As
Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
Handles datagridSearchResults.ItemDataBound
Dim i As Integer
Dim btnFilePath As Button
Select Case e.Item.ItemType()
Case ListItemType.Header
' FORMAT THE DATAGRID HEADER HERE..
For i = 0 To e.Item.Cells.Count - 1
arrGridFieldName.SetValue(e.Item.Cells(i).Text.ToString, i)
Select Case e.Item.Cells(i).Text.ToString
Case "COMPANY_NAME"
arrGridColumnHeader.SetValue("Company
Name", i)
Case "CUST_ACCT_NBR"
arrGridColumnHeader.SetValue("Customer
Account", i)
Case "PROSPECT_ID"
arrGridColumnHeader.SetValue("Prospect ID",
i)
Case "PROPOSAL_ID"
arrGridColumnHeader.SetValue("Proposal ID",
i)
Case "BTN"
arrGridColumnHeader.SetValue("BTN", i)
Case "CITY_NAME"
arrGridColumnHeader.SetValue("City", i)
Case "STATE_CODE"
arrGridColumnHeader.SetValue("State", i)
Case "CUST_PATH"
arrGridColumnHeader.SetValue("Customer
Folder", i)
Case "SALES_PATH"
arrGridColumnHeader.SetValue("Sales
Folder", i)
Case Else
arrGridColumnHeader.SetValue(e.Item.Cells(i).Text, i)
End Select
' replace the oracle field name with what we just
put in the array...
e.Item.Cells(i).Text =
arrGridColumnHeader(i).ToString
e.Item.BackColor = Drawing.Color.HotPink
Next
Case ListItemType.Item, ListItemType.AlternatingItem
' FORMAT THE DATAGRID DETAILS HERE..
For i = 0 To e.Item.Cells.Count - 1
If arrGridFieldName(i).ToString() = "CUST_PATH"
Then
If e.Item.Cells(i).Text() = "0" Then
e.Item.Cells(i).Text() = ""
Else
btnFilePath = New Button
btnFilePath.Text = "OPEN"
btnFilePath.ID = "GreetingBtn"
btnFilePath.CommandName = "OPEN_CUST_PATH"
btnFilePath.CommandArgument =
e.Item.Cells(i).Text()
btnFilePath.OnClientClick = "return
confirm('Ready to Submit');"
e.Item.Cells(i).Controls.Add(btnFilePath)
End If
End If
Next
End Select
End Sub