“value不能为null参数名称:key”

时间:2014-04-04 19:16:18

标签: c# asp.net gridview formview

在调试我正在处理的网站时,我得到了一个“黄色死亡屏幕”。错误消息是“值不能为null。参数名称:键”。我正在尝试将formview绑定到gridview的选定索引。当我在selectedindexchanged方法中设置断点时,所有内容似乎都正确绑定,我可以查看我的formview的值,但是当我继续运行它时,我收到上面的错误消息。我已经尝试将datakeynames属性添加到formview并获取相同的错误消息。我在这里搜索并谷歌并看到一些结果,但没有一个似乎修复或与我的问题有关。

以下是一些代码:

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  

7 个答案:

答案 0 :(得分:17)

我尝试了你所说的一切,但它没有用。 但是,我找到了一个解决方法,由于某种原因,我不知道,工作。 我把它添加到我的web.config文件中:

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

它对我有用:D

答案 1 :(得分:13)

这可能是由启用Visual Studio中的browserlink引起的。禁用它:

http://www.asp.net/visual-studio/overview/2013/using-browser-link#disabling

答案 2 :(得分:5)

尝试关闭Visual Studio并访问同一页面。它应该工作。我也遇到了同样的例外。如果你看到异常它指向导致问题的Visual Studio的PageInspector。不确定为什么VS正在搞乱应用程序加载。

答案 3 :(得分:0)

我的建议是测试你的数据。您似乎正在尝试将空值绑定到控件。确保DataSet中没有空值从数据库返回。它应该是您的第一个停靠点。

答案 4 :(得分:0)

我为formview1刷新了sqldatasource2,当我这样做时,它允许我刷新formview1的架构和键。当我这样做时,它重建了表单视图以查看我需要它的方式,然后它再次停止工作。我确定它来自aspnetspell:spelltextbox控件。我下载了最新版本,现在可以使用了。

答案 5 :(得分:0)

我刚刚遇到了这个问题,对我来说,这是从代码后面添加LiteralControl时发生的。 Text属性为null,这会扰乱PageInspector,因此只需将其设置为string.Empty。

我建议不要修改功能只是为了修复这样的错误,因为当另一台机器上的不同开发人员继承你的代码时,他们会遇到完全相同的问题。

答案 6 :(得分:0)

只需清理并重建适合我的解决方案:)