无法将数据绑定到 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();
//}
我觉得很
愚蠢 - 但我会发布问题所在,以防其他人被这样的事情抓住。
即使我提供了数据列表,该列表中的任何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();