0

ListItem の行からバインドされた値を取得しようとしています。各行にボタンがあり、クリックするとタスクが実行されます(名前と電子メールアドレスがそのリスト項目行にある人に電子メールメッセージを送信します。したがって、リストビューに関連付けられたイベントハンドラーがあり、しようとしています基になるデータ行ビューにアクセスして、データ項目を抽出します。

イベントハンドラーにあるものは次のとおりです。

Protected Sub lvUsers_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles lvUsers.ItemCommand
    Dim diCurrentUser As ListViewDataItem = CType(e.Item, ListViewDataItem)
    Dim drCurrentRow As DataRowView = CType(diCurrentUser.DataItem, DataRowView)
    Select Case e.CommandName
            Case "Email"
                Dim strEmailAddress As String = drCurrentRow("contact_email").ToString.Trim
                Dim strUserName As String = drCurrentRow("login").ToString.Trim
                Dim strUserID As String = drCurrentRow("username").ToString.Trim
                Dim strPassword As String = drCurrentRow("password").ToString.Trim

現在、DataRowView オブジェクトの contact_email 要素にアクセスしようとしている行で失敗します。

私は何を間違っていますか?

ありがとう

4

1 に答える 1

0

次の点を確認してください。

drCurrentRow IsNot Nothing1)その値にアクセスする前に確認してください。

2) drCurrentRow が有効な場合は、処理する前に contact_email という列が含まれていることを確認してください。例えば:

If drCurrentRow.Row.Table.Columns.Contains("contact_email") Then

3) 列が存在する場合は、値に対して操作を実行する前に、項目の内容が Nothing および/または DBNull.Value と同等であることを確認する必要があります。例えば:

If Not drCurrentRow.IsNull("contact_email") Then

したがって、コード コードの一部を次のように書き換えます。

Public Function GetRowStringValue(oRowView As DataRowView, sColumnName As String) As String
   If oRowView IsNot Nothing Then
       If oRowView.Row.Table.Columns.Contains(sColumnName) Then
          If Not oRowView.IsNull(sColumnName) Then
             Return oRowView(sColumnName).ToString.Trim
          End If
       End If
   End If
End Function  

Select Case e.CommandName
    Case "Email"
        Dim strEmailAddress As String = GetRowStringValue(drCurrentRow, "contact_email")
        Dim strUserName As String = GetRowStringValue(drCurrentRow, "login")
        Dim strUserID As String = GetRowStringValue(drCurrentRow, "username")
        Dim strPassword As String = GetRowStringValue(drCurrentRow, "password")
于 2011-12-09T20:30:04.587 に答える