【问题标题】:DropDownList causes error: Object reference not set to an instance of an objectDropDownList 导致错误:对象引用未设置为对象的实例
【发布时间】:2012-07-06 07:01:23
【问题描述】:

我不断收到此错误,不知道为什么。我用谷歌搜索并扫描了 asp.net 网站两天,所以我需要一些帮助。错误是:

Object reference not set to an instance of an object

这是我的代码:

DropDownList DropDownList1 =(DropDownList)ListView1.InsertItem.FindControl("DropDownList1");

string highToLow = DropDownList1.SelectedValue;
string lowToHigh = DropDownList1.SelectedValue;

if (highToLow == "1")
{
    var exmapleFilter = from users in testEntities.users 
                        orderby users.id descending
                        select users;

    ListView1.DataBind();
}

我将下拉列表的值设置为 1 表示高,2 表示低,并且在选定的索引发生更改时,我想运行 ADO.net 实体框架代码以返回已排序的数据列表。

我目前正在使用 linq 数据源和列表视图来显示我的数据库中的内容。

谢谢。

编辑:

这是堆栈跟踪

   System.NullReferenceException was unhandled by user code
   Message=Object reference not set to an instance of an object.
   Source=App_Web_s0ked5y3

   StackTrace:
   at Default.DropDownList1_SelectedIndexChanged(Object sender, EventArgs e)
   in Default:line 120

   at System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e)

   at System.Web.UI.WebControls.DropDownList.RaisePostDataChangedEvent()

   at System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.
   RaisePostDataChangedEvent()

   at System.Web.UI.Page.RaiseChangedEvents()

   at System.Web.UI.Page.ProcessRequestMain(Boolean 
   includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   InnerException: 

【问题讨论】:

  • 哪一行抛出异常?
  • 这一行被高亮显示为错误 DropDownList DropDownList1 =(DropDownList)ListView1.InsertItem.FindControl("DropDownList1");
  • 我如何获得堆栈跟踪? (我跳过书中的调试部分得到了什么)
  • 请在 Default.aspx.cs 的第 120 行复制/粘贴您帖子中的代码
  • 您确定您的代码“(DropDownList)ListView1.InsertItem.FindControl("DropDownList1");"...确实返回了下拉列表的实例...我建议您放置一个该行的断点并使用即时窗口(使用 Ctrl+Alt+i)运行此代码并查看它是否返回一个实例...

标签: c# asp.net visual-studio-2010 entity-framework drop-down-menu


【解决方案1】:

检查您是否在列表视图中

<InsertItemTemplate>
   ....          
   <asp:DropDownList ID="DropDownList1" runat="server" />
   .... 

相关联
ListView1.InsertItem.FindControl("DropDownList1");

【讨论】:

  • 嗨,VOX 检查 InsertItemTemplate 不只是在项目模板中
  • 但是它是空白的我没有用它来插入我只是用列表视图来显示我的数据
  • 等等,我现在真的很困惑,哈哈,我想我看到了我的问题,但是当我更改 ListView1.InsertItem.FindControl("DropDownList1");到 ListView1.ItemTemplate.FindControl("DropDownList1");我得到“System.Web.UI.ITemplate”不包含“FindControl”的定义
  • 不尝试更改 ---> ,
【解决方案2】:

“对象引用未设置为对象的实例”异常通常发生在您尝试使用值为空的引用变量时。表示堆上没有对应的对象。

所以请务必仔细检查您的模板并在页面加载事件中加载所有值。

希望对你有帮助。

【讨论】:

    【解决方案3】:

    基于他们没有堆栈跟踪我怀疑是行:

    DropDownList DropDownList1 =
        (DropDownList)ListView1.InsertItem.FindControl("DropDownList1");
    

    导致 oObject 引用未设置为对象的实例

    一个强有力的理由:名为 InsertItem 的控件不是 ListView1 的子控件

    【讨论】:

      猜你喜欢
      • 2013-12-07
      • 2015-09-09
      • 2016-06-10
      • 2011-07-09
      • 2012-08-31
      • 2011-11-21
      • 2012-10-01
      • 1970-01-01
      相关资源
      最近更新 更多