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