挿入、編集、および削除が可能な ASP.Net / VB.Net DetailsView で、ユーザーが DetailsView の [編集] ボタンと [更新] ボタンをクリックしたときに発生するイベントをトラップしたいと考えています。
これらのイベントを VB.Net コード ビハインド ファイル内のイベント ハンドラでトラップしようとしています。
サンプルコードでその方法を教えてもらえますか?
* アップデート *
このコーディングを試みましたが、[編集] ボタンをクリックすると次のエラーが表示されます。
Unable to cast object of type 'System.Web.UI.WebControls.DetailsView'
to type 'System.Web.UI.WebControls.DetailsViewRow'.
これは、[編集] ボタンを示すマークアップからのコーディングです。
<asp:DetailsView
ID="DetailsViewDetails"
runat="server"
AutoGenerateRows="False"
Height="50px"
Width="268px"
DataSourceID="SqlDataSourceDetails"
DataKeyNames="ID"
OnItemCommand="DetailsViewDetails_ItemCommand">
<Fields>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:Button ID="ButtonUpdate" runat="server" CausesValidation="True"
CommandName="Update" Text="Update" />
<asp:Button ID="ButtonCancelUpdate" runat="server" CausesValidation="False"
CommandName="Cancel" Text="Cancel" />
</EditItemTemplate>
<InsertItemTemplate>
<asp:Button ID="ButtonInsert" runat="server" CausesValidation="True"
CommandName="Insert" Text="Insert" />
<asp:Button ID="ButtonCancelInsert" runat="server" CausesValidation="False"
CommandName="Cancel" Text="Cancel" />
</InsertItemTemplate>
<ItemTemplate>
<asp:Button ID="ButtonEdit" runat="server" CausesValidation="False"
CommandName="Edit" Text="Edit" />
<asp:Button ID="ButtonNew" runat="server" CausesValidation="False"
CommandName="New" Text="New" />
<asp:Button ID="ButtonDelete" runat="server" CausesValidation="False"
CommandName="Delete" Text="Delete" />
<AjaxToolKit:ConfirmButtonExtender ID="deleteButtonConfirmation"
runat="server"
ConfirmText='<%# "You are about to remove: " & vbcr &
Eval("Forename") & vbcr & Eval("Surname") & "!!!" &
vbcrlf & "Are you sure you want to do this?" & vbcrlf &
"Clicking the OK button will delete this parent." %>'
Enabled="True"
TargetControlID="ButtonDelete">
</AjaxToolKit:ConfirmButtonExtender>
</ItemTemplate>
</asp:TemplateField>
これは分離コード ファイルのハンドラーです。
Protected Sub DetailsViewDetails_ItemCommand(sender As Object, e As System.Web.UI.WebControls.DetailsViewCommandEventArgs)
Dim row As DetailsViewRow = DirectCast(DirectCast(e.CommandSource, Control).NamingContainer, DetailsViewRow)
Select Case e.CommandName
Case "Add"
Case "Edit"
' Do this when going into edit mode so changes to the panent's tuition total balance can be updated.
'---------------------------------------------------------------------------------------------------
dcmOriginalRegistrationFee = GetValueFromTextBoxRegistrationFee()
Case "Delete"
End Select
End Sub
Dim ステートメントでエラーが発生します。