Linq 2 SQL - 手动数据绑定无法正常工作

时间:2009-10-12 22:22:32

标签: asp.net linq-to-sql

我在我的asp.net应用程序中使用linq2sql。当它与linq2sqldatasource对象一起使用时,一切正常,我的意思是我将它绑定到没有代码到detailsview控件。 我的想法是当我点击detailscontrol中的一行时,e将加载/添加一个customwebcontrol,允许编辑数据。 为此,我需要加载一些项目来填充该customcontrol中的下拉列表,并在其加载事件中,我有下面的代码不起作用,我不明白为什么。它引发了一个对象null引用异常。

示例:


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //loads combobox with  organizations
                using (MyDataContext cdc = new MyDataContext())
                {
                    var queryOrgs = from p in cdc.orgUnits
                                    select p;

                    //Organizations
                    dropDownOrgs.DataSource = queryOrgs.ToList();
                    dropDownOrgs.DataValueField = "orgUnitID";
                    dropDownOrgs.DataTextField = "orgUnitName";
                    dropDownOrgs.DataBind();
                }
            }
        }

任何人都知道发生了什么事吗?看起来当我想手动绑定所有东西时不起作用:(

希望你能帮助我。

感谢。 特谢拉

1 个答案:

答案 0 :(得分:1)

@Chalkey是对的。我自己遇到了这个错误,由于LINQ to SQL执行“懒惰”查询,它会等到最后一分钟才真正执行查询。

这意味着它可能要等到page_load函数执行查询之后(因此在using语句之外)。

因此,使用.ToList()将数据作为列表返回,以强制它立即运行查询。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        //loads combobox with  organizations
        using (MyDataContext cdc = new MyDataContext())
        {
            List<orgUnit> queryOrgs = (
                from p in cdc.orgUnits
                select p
                ).ToList();

            //Organizations
            dropDownOrgs.DataSource = queryOrgs.ToList();
            dropDownOrgs.DataValueField = "orgUnitID";
            dropDownOrgs.DataTextField = "orgUnitName";
            dropDownOrgs.DataBind();
        }
    }
}