Well...no.
ItemCreated is called whenever DataGridItem is created, that happens when
grid is databound (items created based on datasource) and when DataGrid is
restored from ViewState (happens at LoadViewState phase before Page_Load).
It means ItemCreated event can even be raised more than once during a
request (grid is restored from ViewState and again rebound based on certain
action when it happensd twice).
ItemDataBound again is raised only when DataGrid is databound, that is,
DataBind() is called.
--
Teemu Keiski
MCP, Microsoft MVP (ASP.NET), AspInsiders member
ASP.NET Forum Moderator, AspAlliance Columnist
"John Martin" <> wrote in message
news: om...
> I've made an .NET application where the contents of a datagrid (dgr1)
> is changed when the user changes the selection in a drop-down list
> (drd1). This has works fine as a beginning.
> Then I want to manipulate the look of the datagrid.
> I do this in the ItemCreated event, and on the first run (application
> start) this works as supposed. But when a selection is made in drd1, I
> find during debugging that the dgr1_ItemCreated event is fired before
> the drd1_SelectedIndexChanged. Since the update of the dataset is
> performed in the SelectedIndexChanged event, this results in an error.
> Why are the events fired in this order? To me it seems obvious that
> the SelectedIndexChanged event should be fired first, or???
>
> This is parts of my code showing the two events:
>
> Private Sub Dgr1_ItemCreated(ByVal sender As Object, ByVal e As
> System.Web.UI.WebControls.DataGridItemEventArgs) Handles
> Dgr1.ItemCreated
>
> Dim MyObj As Object
>
> If e.Item.ItemType = ListItemType.Header Then
> e.Item.Font.Italic = True
> e.Item.Font.Bold = True
> End If
>
> If Not ((e.Item.ItemType.ToString() = "Header") Or
> (e.Item.ItemType.ToString() = "Footer")) Then
> MyObj = CType(e.Item.DataItem, Object)
> ' Dummy declared at page level
> If Dummy <> MyObj.row.itemarray(0) Then
> Dummy = MyObj.row.itemarray(0)
> Else
> e.Item.Visible = False
>
> End If
> End If
> End Sub
>
> Private Sub drd1_SelectedIndexChanged(ByVal sender As System.Object,
> ByVal e As System.EventArgs) Handles cmbCategory.SelectedIndexChanged
>
> 'Update parameter
> SqlDataAdapter1.SelectCommand.Parameters(1).Value =
> drd1.SelectedItem.Value
> 'Update Dataset1
> DataSet1.Clear()
> SqlDataAdapter1.Fill(DataSet1)
> Drg1.DataBind()
>
> End sub
>
>
> Any suggestions how to fix this?
>
>
> Regards,
>
> John Martin