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" />
                        &nbsp;<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>&nbsp;</td>
                                <td>
                                    <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Send Request" />
                                </td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td>
                                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("PropertyAddress") %>'></asp:TextBox>
                                </td>
                            </tr>
                        </table>
                        <br />
                        <br />
                        <br />

                        &nbsp;
                    </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" />
                        &nbsp;<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" />
                        &nbsp;<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="New" />
                    </ItemTemplate>
                </asp:FormView>
            </td>
        </tr>
        <tr>
            <td>&nbsp;</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