A>а можно легкий пример где нибуть посмотреть..
Наверно это не совсем то, что тебе нужно.
У нас был контрол ascx, отображающий DataGrid.
В одной колонке были две кнопки
<asp:TemplateColumn
HeaderText="......"
SortExpression="...."
....>
<ItemTemplate>
<asp:ImageButton
id=ImageButton_Status
runat=server
ImageUrl="...."
Width=13 Height=13 />
<asp:LinkButton
ID=LinkButton_ProposalID
ForeColor=#000000
Runat=server
Font-Name="Verdana"
Font-Size="x-small">
<span style="vertical-align:top;">
<%# DataBinder.Eval(Container.DataItem, "....") %>
</span>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
В коде ascx был обработчик ItemCommand, примерно такой.
(писалось на vb, но это не суть).
Private Sub DataGrid_Sheet_ItemCommand( _
ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) _
Handles DataGrid_Sheet.ItemCommand
'we should check what the control have raised the event
Dim pControl As WebControl
Dim pRowView As DataRowView
....
'check the item type of event source
If e.Item.ItemType <> ListItemType.AlternatingItem And _
e.Item.ItemType <> ListItemType.Item And _
e.Item.ItemType <> ListItemType.EditItem And _
e.Item.ItemType <> ListItemType.SelectedItem Then
Exit Sub
End If
'obtain the source control
pControl = e.CommandSource
....
'check the type of source control
Select Case pControl.ID
Case "LinkButton_ProposalID"
'the poroposal ID was clicked, fire item selected event
RaiseEvent ItemSelect(e.Item.ItemIndex, ....)
Case "ImageButton_Status"
'the Status button was clicked, fire item delete event
RaiseEvent ItemStatus(e.Item.ItemIndex, ....)
Case Else
Exit Sub
End Select
End Sub
Контрол rais-ит события. Страница подписывается на события контрола.