我在aspx.cs文件中有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
epdc = new edu_portalDataContext();
IQueryable<Assignment> _assignmentsList =
from assignment in epdc.Assignments
select assignment;
assignmentsList = _assignmentsList.GetEnumerator();
assignmentsList.MoveNext();
ListOfAssignments.DataSource = epdc.Assignments;
ListOfAssignments.DataBind();
}
注意,为了让您能够理解代码:
无论如何,这很简单 - 实例化数据上下文,发送基本查询,获取枚举器,将一些数据绑定到转发器。这部分有效。下一部分让我感到困惑。
稍后在代码中,我有一个与Button控件绑定的click事件。我想要发生的是,用户在某些字段中输入一些数据,用户点击按钮,程序用该数据创建一个新记录,程序将其发送到数据库,数据库存储新数据, Repeater(ListOfAssignments)使用新数据库数据进行更新,用户可以在页面上看到新数据。
以下是点击事件中的代码:
Assignment newAssignment = new Assignment
{
//data is entered here
//...
};
epdc.Assignments.InsertOnSubmit(newAssignment);
epdc.SubmitChanges();
但这是实际发生的事情:当用户点击按钮时,一切都按预期进行,除了转发器不会使用新数据更新。我做了一些调试,这是我发现的:
assignmentsList 不会使用新的数据库数据进行更新。我在Visual Studio的变量检查器中查看,LINQ查询不会引入任何新数据。就像用户从未输入任何内容一样。在他们刷新页面之前,即:当他们刷新时,Repeater会更新并显示新数据。
为什么LINQ查询不能在回发时给我新的数据?
答案 0 :(得分:4)
您的点击事件发生在Page_Load之后。因此,在添加新数据之前,转发器会反弹。在PreRender中进行数据绑定。