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 回答