无法将数据绑定到 DropDownList - NullReferenceException

本文关键字:DropDownList NullReferenceException 数据绑定 | 更新日期: 2023-09-27 18:32:21

我正在尝试将数据绑定到我使用 <asp:DropDownList 标签创建的DropDownList。它成功地适用于前DropDownList,但其余两个会抛出异常。我知道数据源不是空的,确实有值,所以我唯一能想到的是其他两个列表框尚未加载或绑定。

我尝试使用 Page_LoadComplete 方法来添加内容,但它似乎没有触发。我已经习惯了MVC,而且我对Web Forms很陌生,所以我不确定我做错了什么。我说元素尚未加载是否正确,如果是,加载后如何绑定它们

protected void Page_Load(object sender, EventArgs e)
    {
        //Page.LoadComplete += new EventHandler(Page_LoadComplete);
        if (DataContext == null)
        {
            DataContext = new ReuseLibraryDataContext(SPContext.Current.Web.Url);
        }
        // top level category for all documents
        _functions = DataContext.ReuseLibrary.Select(p => p.FunctionalCategories).Distinct().ToList();
        // the first sub category
        _sc1 = DataContext.ReuseLibrary.Select(p => p.SubCategoriesLevel1).Distinct().ToList();
        // the second sub category
        _sc2 = DataContext.ReuseLibrary.Select(p => p.SubCategoriesLevel2).Distinct().ToList();

        // add the functions to the dropdown
        listFunctions.DataSource = _functions;
        listFunctions.DataBind();
        // add the sub cat 1 to the dropdown
        listSC1.DataSource = _sc1;
        listSC1.DataBind();
        // add the sub cat 2 to the dropdown
        listSC2.DataSource = _sc2;
        listSC2.DataBind();
    }
    //protected void Page_LoadComplete(object sender, EventArgs e)
    //{
    //    // add the functions to the dropdown
    //    listFunctions.DataSource = _functions;
    //    listFunctions.DataBind();
    //    // add the sub cat 1 to the dropdown
    //    listSC1.DataSource = _sc1;
    //    listSC1.DataBind();
    //    // add the sub cat 2 to the dropdown
    //    listSC2.DataSource = _sc2;
    //    listSC2.DataBind();
    //}

无法将数据绑定到 DropDownList - NullReferenceException

我觉得很

愚蠢 - 但我会发布问题所在,以防其他人被这样的事情抓住。

即使我提供了数据列表,该列表中的任何null对象也会抛出NullReferenceException。完全可以理解。

为了解决,我删除了null值和中提琴。按预期工作。

_sc1.RemoveAll(item => item == null);
_sc2.RemoveAll(item => item == null);

我最终更新了查询以排除空值:

_sc1 = DataContext.ReuseLibrary.Select(p => p.SubCategoriesLevel1).Where(p => p != null).Distinct().ToList();