"значение не может быть нулевым именем параметра: key"

Я получаю "желтый экран смерти" при отладке веб-сайта, над которым я работаю. Сообщение об ошибке: "Значение не может быть пустым. Имя параметра: key." Я пытаюсь связать formview с выбранным индексом gridview. Кажется, что все правильно связывается, когда я устанавливаю точки останова в моем выбранном методеindexchanged, я могу просматривать значения моего вида формы, но когда я продолжаю его запуска, я получаю вышеуказанное сообщение об ошибке. Я попытался добавить свойство datakeynames в formview и получить то же сообщение об ошибке. Я искал здесь и google и вижу некоторые результаты, но никто, кажется, не исправляет или не касается моей проблемы.

Ниже приведен код:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    lblMessage.Text = "";
    cbCalled.Visible = true;
    cbError.Visible = true;
    cbVerbal.Visible = true;
    btnSubmit.Visible = true;
    FormView1.Visible = true;
    FormView1.DataBind();
    FormView fv1 = FormView1;
    Label PathCountLabel = (Label)fv1.FindControl("pathcountLabel");
    TextBox PathResult = (TextBox)fv1.FindControl("PathResultLabel");
    if ((PathCountLabel.Text != "1 of 1 biopsies") && (PathCountLabel.Text != "Only 1 Pathology Ordered"))
    {
        PathResult.BackColor = ColorTranslator.FromHtml("#FFFFAA");
    }
}

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        Visible="False" DataKeyNames="PatientID" DataSourceID="SqlDataSource1" 
        onselectedindexchanged="GridView1_SelectedIndexChanged" AllowSorting="True" onsorting="GridView1_Sorting">
    <Columns>
        <asp:CommandField ShowSelectButton="True" />
        <asp:BoundField DataField="PatientID" HeaderText="Patient Id" SortExpression="PatientID" />
        <asp:BoundField DataField="LastName" HeaderText="Last Name" 
            SortExpression="LastName" />
        <asp:BoundField DataField="FirstName" HeaderText="First Name" 
            SortExpression="FirstName" />
        <asp:BoundField DataField="PathCount" HeaderText="Path Count" 
            SortExpression="PathCount" />
        <asp:BoundField DataField="DateOfService" DataFormatString="{0:d}" 
            HeaderText="Date of Service" SortExpression="DateOfService" />
    </Columns>
</asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:PathologyConnectionString %>" 
        SelectCommand="SELECT * FROM [PatientDB]">
    </asp:SqlDataSource>
<br />
</div>
<div id="rightCol">
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource2" 
    Width="708px">
    <EditItemTemplate>
        LastName:
        <asp:TextBox ID="LastNameTextBox" runat="server" 
            Text='<%# Bind("LastName") %>' />
        <br />
        FirstName:
        <asp:TextBox ID="FirstNameTextBox" runat="server" 
            Text='<%# Bind("FirstName") %>' />
        <br />
        DOB:
        <asp:TextBox ID="DOBTextBox" runat="server" 
            Text='<%# Bind("DOB") %>' />
        <br />
        PhoneNumber:
        <asp:TextBox ID="PhoneNumberTextBox" runat="server" 
            Text='<%# Bind("PhoneNumber") %>' />
        <br />
        ChartNumber:
        <asp:TextBox ID="ChartNumberTextBox" runat="server" 
            Text='<%# Bind("ChartNumber") %>' />
        <br />
        AccountNumber:
        <asp:TextBox ID="AccountNumberTextBox" runat="server" 
            Text='<%# Bind("AccountNumber") %>' />
        <br />
        PathResult:
        <asp:TextBox ID="PathResultTextBox" runat="server" 
            Text='<%# Bind("PathResult") %>' />
        <br />
        PreviousVisitNote:
        <asp:TextBox ID="PreviousVisitNoteTextBox" runat="server" 
            Text='<%# Bind("PreviousVisitNote") %>' />
        <br />
        PathSlipNote:
        <asp:TextBox ID="PathSlipNoteTextBox" runat="server" 
            Text='<%# Bind("PathSlipNote") %>' />
        <br />
        PathSlipCheckboxes:
        <asp:TextBox ID="PathSlipCheckboxesTextBox" runat="server" 
            Text='<%# Bind("PathSlipCheckboxes") %>' />
        <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>
        LastName:
        <asp:TextBox ID="LastNameTextBox" runat="server" 
            Text='<%# Bind("LastName") %>' />
        <br />
        FirstName:
        <asp:TextBox ID="FirstNameTextBox" runat="server" 
            Text='<%# Bind("FirstName") %>' />
        <br />
        DOB:
        <asp:TextBox ID="DOBTextBox" runat="server" 
            Text='<%# Bind("DOB") %>' />
        <br />
        PhoneNumber:
        <asp:TextBox ID="PhoneNumberTextBox" runat="server" 
            Text='<%# Bind("PhoneNumber") %>' />
        <br />
        ChartNumber:
        <asp:TextBox ID="ChartNumberTextBox" runat="server" 
            Text='<%# Bind("ChartNumber") %>' />
        <br />
        AccountNumber:
        <asp:TextBox ID="AccountNumberTextBox" runat="server" 
            Text='<%# Bind("AccountNumber") %>' />
        <br />
        PathResult:
        <asp:TextBox ID="PathResultTextBox" runat="server" 
            Text='<%# Bind("PathResult") %>' />
        <br />
        PreviousVisitNote:
        <asp:TextBox ID="PreviousVisitNoteTextBox" runat="server" 
            Text='<%# Bind("PreviousVisitNote") %>' />
        <br />
        PathSlipNote:
        <asp:TextBox ID="PathSlipNoteTextBox" runat="server" 
            Text='<%# Bind("PathSlipNote") %>' />
        <br />
        PathSlipCheckboxes:
        <asp:TextBox ID="PathSlipCheckboxesTextBox" runat="server" 
            Text='<%# Bind("PathSlipCheckboxes") %>' />
        <br />
        <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
            CommandName="Insert" Text="Insert" />
        &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
            CausesValidation="False" CommandName="Cancel" Text="Cancel" />
    </InsertItemTemplate>
    <ItemTemplate>
        Last Name:
        <asp:Label ID="LastNameLabel" runat="server" Text='<%# Bind("LastName") %>' />
        &nbsp;&nbsp;&nbsp;&nbsp; First Name:
        <asp:Label ID="FirstNameLabel" runat="server" Text='<%# Bind("FirstName") %>' />
        &nbsp;&nbsp;&nbsp;&nbsp; DOB:
        <asp:Label ID="DOBLabel" runat="server" Text='<%# Bind("DOB") %>' />
        &nbsp;&nbsp;
        <br />
        <br />
        Phone Number:
        <asp:Label ID="PhoneNumberLabel" runat="server" 
            Text='<%# Bind("PhoneNumber") %>' />
        &nbsp;&nbsp;&nbsp;&nbsp; Chart Number:
        <asp:Label ID="ChartNumberLabel" runat="server" 
            Text='<%# Bind("ChartNumber") %>' />
        &nbsp;&nbsp;&nbsp; Account Number:
        <asp:Label ID="AccountNumberLabel" runat="server" 
            Text='<%# Bind("AccountNumber") %>' />
        <br />
        <br />
        Biopsy Location:
        <asp:Label ID="BiopsyLocationLabel" runat="server" Text='<%# Bind("BiopsyArea") %>'></asp:Label>
        <br />
        <br />
        Path Result:
        <br />
                    <asp:TextBox ID="PathResultLabel" runat="server" 
            Text='<%# Bind("PathResult") %>' ReadOnly="True" TextMode="MultiLine" Width="600" Height="250" />

        <br />
        <br />
        Previous Visit Note:<br />
        <asp:TextBox ID="PreviousVisitNoteLabel" runat="server" 
            Text='<%# Bind("PreviousVisitNote") %>' ReadOnly="True" TextMode="MultiLine" Width="600" Height="250" />
        <br />
        <br />
        Pathology Lab Note:<br />
        <asp:TextBox ID="txtPathNote" runat="server" 
            Text='<%# Bind("PathNote") %>' ReadOnly="True" TextMode="MultiLine" Width="600" Height="150" />
        <br />
        <br />
        Note to DA/DT:<br />
        <asp:TextBox ID="txtDADTNote" runat="server" 
            Text='<%# Bind("DADTNote") %>' ReadOnly="True" TextMode="MultiLine" Width="600" Height="150" />
        <br />
        <br />
        Path Slip Note:<br />
        <asp:Label ID="PathSlipNoteLabel" runat="server" 
            Text='<%# Bind("PathSlipNote") %>' />
        <br />
        <br />
        Path Slip Checkboxes:
        <br />
        <asp:Label ID="PathSlipCheckboxesLabel" runat="server" 
            Text='<%# Bind("PathSlipCheckboxes") %>' />
        <br />
        <br />
        Patient Message:<br />
        <ASPNetSpell:SpellTextBox ID="txtPatientMessage" runat="server" TextMode="MultiLine" 
    DictionaryLanguage="English (International), English (Medical)" Height="88px" 
    Width="597px" Text='<%# Bind("PatientMessage") %>' onKeyPress="return macro(event);"></ASPNetSpell:SpellTextBox>
    <br />
    <asp:Label ID="pathcountLabel" runat="server" Text = '<%# Bind("PathCount") %>' Visible="false"></asp:Label>
    </ItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:PathologyConnectionString %>" 

    SelectCommand="SELECT [LastName], [FirstName], [DOB], [PhoneNumber], [ChartNumber], [AccountNumber], [PathResult], [PreviousVisitNote], [PathSlipNote], [PathSlipCheckboxes], [PathNote], [DADTNote], [BiopsyArea], [PatientMessage], [PathCount] FROM [PatientDB] WHERE ([PatientID] = @PatientID)">
    <SelectParameters>
        <asp:ControlParameter ControlID="GridView1" Name="PatientID" 
            PropertyName="SelectedValue" Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>

Я добавил трассировку стека из YSOD

Server Error in '/' Application.
--------------------------------------------------------------------------------


Value cannot be null.
Parameter name: key 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.ArgumentNullException: Value cannot be null.
Parameter name: key

Source Error: 


 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 



[ArgumentNullException: Value cannot be null.
Parameter name: key]
   System.Collections.Generic.Dictionary`2.FindEntry(TKey key) +10627293
   System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value) +12
   Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.GetLiteralTraceData(LiteralControl literal, TraceData& data) +97
   Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.GetTraceData(Object renderedObject) +421
   Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.EndRendering(TextWriter writer, Object renderedObject) +79
   System.Web.UI.RenderTraceListenerList.EndRendering(TextWriter writer, Object renderedObject) +58
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +142
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   ASPNetSpell.SpellTextBox.Render(HtmlTextWriter writer) +6035
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.WebControls.TableCell.RenderContents(HtmlTextWriter writer) +57
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +10
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.WebControls.FormViewRow.Render(HtmlTextWriter writer) +38
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.WebControls.Table.RenderContents(HtmlTextWriter writer) +211
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +10
   System.Web.UI.WebControls.FormView.Render(HtmlTextWriter writer) +86
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +102
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +53
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Page.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1386




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18446  

Ответ 1

Я обновил sqldatasource2 для formview1, когда я это сделал, позволил мне обновить схему и ключи для formview1. Когда я это сделал, это сработало, поэтому я перестроил вид формы, чтобы посмотреть, как мне это нужно, после чего он снова перестает работать. Я определил, что это было из aspnetspell: control spelltextbox. Я загрузил последнюю версию, и теперь она работает.

Ответ 2

Я попробовал все, что вы сказали, и это не сработало. Однако я нашел обходное решение, которое по какой-то причине я не знаю, работал. Я добавил это в свой файл web.config:

 <add key="PageInspector:ServerCodeMappingSupport" value="Disabled" />

И это сработало для меня: D

Ответ 4

Попробуйте закрыть Visual Studio и получить доступ к той же странице. Он должен работать. Я также столкнулся с тем же исключением. Если вы видите исключение, это указывает на PageInspector Visual Studio, который вызывает проблему. Не уверен, почему VS возится с загрузкой приложения.

Ответ 5

Мое предложение - проверить ваши данные. Казалось бы, вы пытаетесь связать нулевое значение с элементом управления. Убедитесь, что в DataSet нет нулей в базе данных. Это должен быть ваш первый порт захода.

Ответ 6

У меня была эта проблема, и для меня это произошло при добавлении LiteralControl из кода. Свойство Text было null, и это расстраивает PageInspector, поэтому просто установите его в string.Empty.

Я бы посоветовал отключить функции, чтобы исправить ошибки, например, потому что, когда другой разработчик на другом компьютере наследует ваш код, у них будет такая же проблема.