Asp.net System.NullReferenceException未由用户代码对象变量处理,或未设置块变量
帮助:……正在与此空引用进行斗争。下面是代码,有什么想法吗Asp.net System.NullReferenceException未由用户代码对象变量处理,或未设置块变量,asp.net,vb.net,formview,Asp.net,Vb.net,Formview,帮助:……正在与此空引用进行斗争。下面是代码,有什么想法吗 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server"> <table class="auto-style1"> <tr> <td> <asp:DetailsView ID="DetailsView1" runat="server"
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<table class="auto-style1">
<tr>
<td> <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="PID" DataSourceID="DetailsSqlDataSource" Height="50px" HorizontalAlign="Center" Width="589px" CellPadding="4" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<CommandRowStyle BackColor="#E2DED6" Font-Bold="True" />
<EditRowStyle BackColor="#999999" />
<FieldHeaderStyle BackColor="#E9ECF1" Font-Bold="True" />
<Fields>
<asp:BoundField DataField="PID" HeaderText="PID" InsertVisible="False" ReadOnly="True" SortExpression="PID" Visible="False" />
<asp:TemplateField HeaderText="Address" SortExpression="PAddress">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("PAddress") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("PAddress") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("PAddress") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
<asp:BoundField DataField="St" HeaderText="St" SortExpression="St" />
<asp:BoundField DataField="Zip" HeaderText="Zip" SortExpression="Zip" />
<asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
<asp:BoundField DataField="Beds" HeaderText="Beds" SortExpression="Beds" />
<asp:BoundField DataField="Bath" HeaderText="Bath" SortExpression="Bath" />
<asp:BoundField DataField="SqFt" HeaderText="SqFt" SortExpression="SqFt" />
<asp:BoundField DataField="MLS" HeaderText="MLS" SortExpression="MLS" />
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
<asp:BoundField DataField="AgentName" HeaderText="AgentName" SortExpression="AgentName" />
<asp:BoundField DataField="AgentEmail" HeaderText="AgentEmail" SortExpression="AgentEmail" />
<asp:TemplateField>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("PhotoPath") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("PhotoPath") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Image ID="Image1" runat="server" Height="175px" ImageUrl='<%# Eval("PhotoPath") %>' Width="175px" />
</ItemTemplate>
</asp:TemplateField>
</Fields>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
</asp:DetailsView>
</td>
<td valign="top">
<asp:FormView ID="FormView1" runat="server" DataKeyNames="Id" DataSourceID="RequestInfoSqlDataSource" DefaultMode="Insert">
<EditItemTemplate>
FromAddress:
<asp:TextBox ID="FromAddressTextBox" runat="server" Text='<%# Bind("FromAddress") %>' />
<br />
PropertyAddress:
<asp:TextBox ID="PropertyAddressTextBox" runat="server" Text='<%# Bind("PropertyAddress") %>' />
<br />
Phone:
<asp:TextBox ID="PhoneTextBox" runat="server" Text='<%# Bind("Phone") %>' />
<br />
Message:
<asp:TextBox ID="MessageTextBox" runat="server" Text='<%# Bind("Message") %>' />
<br />
FName:
<asp:TextBox ID="FNameTextBox" runat="server" Text='<%# Bind("FName") %>' />
<br />
LName:
<asp:TextBox ID="LNameTextBox" runat="server" Text='<%# Bind("LName") %>' />
<br />
Id:
<asp:Label ID="IdLabel1" runat="server" Text='<%# Eval("Id") %>' />
<br />
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" />
<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
</EditItemTemplate>
<InsertItemTemplate>
<table style="width:100%;">
<tr>
<td colspan="2" style="text-align: center; font-weight: 700">Request Information:</td>
</tr>
<tr>
<td>First Name:</td>
<td>
<asp:TextBox ID="FNameTextBox" runat="server" Text='<%# Bind("FName") %>' Width="128px" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" controltovalidate="FNameTextBox" runat="server" ErrorMessage="Please enter your first name" style="color: #FF0000; font-weight: 700"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>Last Name:</td>
<td>
<asp:TextBox ID="LNameTextBox" runat="server" Text='<%# Bind("LName") %>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" controltovalidate="LNameTextBox" runat="server" ErrorMessage="Please enter your last name" style="font-weight: 700; color: #FF0000"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>Email:</td>
<td>
<asp:TextBox ID="FromAddressTextBox" runat="server" Text='<%# Bind("FromAddress") %>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="FromAddressTextBox" runat="server" ErrorMessage="Please enter your email address" style="font-weight: 700; color: #FF0000"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>Phone:</td>
<td>
<asp:TextBox ID="PhoneTextBox" runat="server" style="text-align: left" Text='<%# Bind("Phone") %>' />
</td>
</tr>
<tr>
<td>Message:</td>
<td>
<asp:TextBox ID="MessageTextBox" runat="server" Height="189px" Text='<%# "Please Send me Information about: "+Detailsview1.DataItem("paddress") + " " +Detailsview1.DataItem("City") %>' TextMode="MultiLine" Width="198px" />
</td>
</tr>
<tr>
<td> </td>
<td>
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Send Request" />
</td>
</tr>
<tr>
<td> </td>
<td>
<asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("PropertyAddress") %>'></asp:TextBox>
</td>
</tr>
</table>
<br />
<br />
<br />
</InsertItemTemplate>
<ItemTemplate>
FromAddress:
<asp:Label ID="FromAddressLabel" runat="server" Text='<%# Bind("FromAddress") %>' />
<br />
PropertyAddress:
<asp:Label ID="PropertyAddressLabel" runat="server" Text='<%# Bind("PropertyAddress") %>' />
<br />
Phone:
<asp:Label ID="PhoneLabel" runat="server" Text='<%# Bind("Phone") %>' />
<br />
Message:
<asp:Label ID="MessageLabel" runat="server" Text='<%# Bind("Message") %>' />
<br />
FName:
<asp:Label ID="FNameLabel" runat="server" Text='<%# Bind("FName") %>' />
<br />
LName:
<asp:Label ID="LNameLabel" runat="server" Text='<%# Bind("LName") %>' />
<br />
Id:
<asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' />
<br />
<asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" />
<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" />
<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="New" />
</ItemTemplate>
</asp:FormView>
</td>
</tr>
<tr>
<td> </td>
<td>
<asp:SqlDataSource ID="RequestInfoSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:GretnaRealtyConnectionString %>" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [Id], [FromAddress], [PropertyAddress], [Phone], [Message], [FName], [LName] FROM [RequestInfo] WHERE (([PropertyAddress] = @PropertyAddress) AND ([PropertyAddress] = @PropertyAddress2))" InsertCommand="INSERT INTO [RequestInfo] ([FName], [LName], [FromAddress], [Phone], [Message],[PropertyAddress]) VALUES (@FName, @LName, @FromAddress, @Phone, @Message, @Hiddenfield1)">
<InsertParameters>
<asp:Parameter Name="FName" />
<asp:Parameter Name="LName" />
<asp:Parameter Name="FromAddress" />
<asp:Parameter Name="Phone" />
<asp:Parameter Name="Message" />
<asp:Parameter Name="Hiddenfield1" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="DetailsView1" Name="PropertyAddress" PropertyName="SelectedValue" Type="String" DefaultValue="0" />
<asp:QueryStringParameter Name="PropertyAddress2" QueryStringField="Paddress" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</td>
</tr>
</table>
<asp:SqlDataSource ID="DetailsSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:GretnaRealtyConnectionString %>" SelectCommand="SELECT [PID], [PAddress], [City], [St], [Zip], [Price], [Beds], [Bath], [SqFt], [MLS], [Description], [AgentName], [AgentEmail], [Status], [PhotoPath] FROM [GretnaRealty] WHERE ([PID] = @PID)">
<SelectParameters>
<asp:QueryStringParameter Name="PID" QueryStringField="PID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</asp:Content>
我可能遗漏了一些东西,但看起来您实际上没有一个名为“PAddress”的控件。您有绑定到字段
PAddress
的控件,但没有ID为“PAddress”的控件。这可能是你问题的根源
使用控件的FindControl
方法时,需要查找内部控件的ID
,而不是它绑定到的字段
类似地,您正在
e.Values
集合中查找名为“Textbox3”的值。您应该在此处查找字段名,即e.Values(“PropertyAddress”)
请在问题中添加更多详细信息。您何时收到NullReferenceException
?此行出现错误:“”。我在这一行上遇到错误:“”在我单击“插入”链接之前,此操作一直有效。如果在绑定DetailsView之前绑定FormView,您可能会遇到问题。Per,“此属性仅在数据绑定发生后可用。在数据绑定发生前,此属性返回null。”正在接近:未设置对象变量或With block变量
添加了此vb:受保护的子详细信息视图1\u数据绑定(\uBYVAL发送方作为对象,ByVal e作为事件参数)Dim rowView作为数据行视图=\uCTYPE(DetailsView1.DataItem,DataRowView)如果rowView.Row(0).ToString()=“PID”然后是DetailsView1.FieldHeaderStyle.BackColor=\uuSystem.Drawing.Color.Red End If End Sub
Imports System.Web.UI.WebControls.GridView
Imports System.Web.UI.WebControls.FormView
Partial Class Details
Inherits System.Web.UI.Page
Protected Sub FormView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertedEventArgs) Handles FormView1.ItemInserted
Dim MessageTextBox As TextBox = CType(Me.DetailsView1.FindControl("Paddress"), TextBox)
e.Values("MessageTextBox") = DetailsView1.DataItem
Dim Paddresstextbox As TextBox = CType(Me.DetailsView1.FindControl("Paddress"), TextBox)
e.Values("Textbox3") = DetailsView1.DataItem
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Automatically select the first row for
'the GridView control to cause the
'FormView control to display data.
If Not IsPostBack Then
GridView1.SelectedIndex = 0
End If
End Sub