1

ASP.Net DetailsView データが最初に表示されたときに、このコーディングに示されている変数に値を設定する方法を教えてください。

コード ビハインド ファイルで既にこれを試しましたが、次のエラーが表示されました。

Object reference not set to an instance of an object.

これはコーディングです:

Protected Sub DetailsViewDetails_DataBound(sender As Object, e As EventArgs) Handles DetailsViewDetails.DataBound

    Dim txtOriginalRegistrationFee As TextBox

    If DetailsViewDetails.CurrentMode = DetailsViewMode.Edit Then
        txtOriginalRegistrationFee = FindControl("TextBoxRegistrationFee")

        If String.IsNullOrEmpty(txtOriginalRegistrationFee.Text) = False Then
            MsgBox(txtOriginalRegistrationFee)
        End If
    End If
End Sub

これはaspxファイルからのものです:

<asp:TemplateField HeaderText="RegistrationFee" SortExpression="RegistrationFee">
   <EditItemTemplate>
      <asp:TextBox ID="TextBoxRegistrationFee" runat="server" Text='<%# Eval("RegistrationFee") %>'></asp:TextBox>
   </EditItemTemplate>

   <InsertItemTemplate>
      <asp:TextBox ID="TextBoxRegistrationFee" runat="server" Text='<%# Bind("RegistrationFee") %>'></asp:TextBox>
   </InsertItemTemplate>

   <ItemTemplate>
      <asp:Label ID="LabelRegistrationFee" runat="server" Text='<%# Bind("RegistrationFee", "{0:c}") %>'></asp:Label>
   </ItemTemplate>

   <ItemStyle ForeColor="Blue" />
</asp:TemplateField>

* アップデート *

あなたの助けに基づいて更新されたこのコーディングを使用しようとしましたが、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。DetailsView の編集ボタンをクリックするとエラーが発生する。

4

2 に答える 2

1

FindControl関数には、検索するためのコントロールが必要です。そうでない場合は、ページ(またはコンテンツ)レベルのコントロールを検索します。

試す

txtOriginalRegistrationFee = DetailsViewDetails.FindControl("TextBoxRegistrationFee")

ちなみに、MsgBox関数を使用した行も機能しません。MsgBoxはWindowsフォーム用であり、Webでは機能しません。そのタイプの機能にはjavascriptを使用する必要があります。さらに、その関数はコントロールではなく文字列を取ります。

于 2012-11-13T18:48:56.480 に答える
0

私は VB で作業していないので、ご容赦ください.... テンプレートは、詳細ビューが挿入モードの場合にのみレンダリングされます。

Dim txtOriginalRegistrationFee As TextBox

If DetailsViewDetails.CurrentMode = DetailsViewMode.Insert Then
    txtOriginalRegistrationFee = FindControl("TextBoxRegistrationFee")

    If String.IsNullOrEmpty(txtOriginalRegistrationFee.Text) = False Then
        MsgBox(txtOriginalRegistrationFee)
    End If
End If
于 2012-11-13T15:47:34.460 に答える