使用DetailsView文本框数据值填充变量

时间:2012-11-13 15:38:47

标签: asp.net vb.net detailsview

首次显示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的编辑按钮时出错。

2 个答案:

答案 0 :(得分:1)

FindControl函数需要一个控件来搜索,否则它将搜索页面(或内容)级别控件。

尝试

txtOriginalRegistrationFee = DetailsViewDetails.FindControl("TextBoxRegistrationFee")

顺便说一下,使用MsgBox函数的行也不起作用。 MsgBox适用于Windows窗体,不适用于Web。您必须使用javascript来实现该类型的功能。另外,该函数需要一个字符串,而不是一个控件。

答案 1 :(得分: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