我在 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();
}
注释,使您能够理解代码:
- Assignments 是我从中提取数据的数据库表的名称。
- ListOfAssignments 是 Repeater 控件的 ID。
- assignmentsList 在 ListOfAssignments_ItemDataBound 方法中使用。
无论如何,这很简单——实例化一个数据上下文,向它发送一个基本查询,获取一个枚举器,将一些数据绑定(bind)到一个转发器。这部分有效。下一部分让我感到困惑。
稍后在代码中,我有一个绑定(bind)到 Button 控件的单击事件。我想要发生的是,用户在某些字段中输入一些数据,用户单击按钮,程序用该数据创建一个新记录,程序将其发送到数据库,数据库存储新数据, Repeater (ListOfAssignments) 使用新的数据库数据更新,用户在页面上看到新数据。
点击事件的代码如下:
Assignment newAssignment = new Assignment
{
//data is entered here
//...
};
epdc.Assignments.InsertOnSubmit(newAssignment);
epdc.SubmitChanges();
但这是实际发生的情况:当用户单击按钮时,一切都按预期进行,除了转发器不会更新新数据。我做了一些调试,这是我发现的:
assignmentsList 不更新新的数据库数据。我查看了 Visual Studio 的变量检查器,LINQ 查询没有提取任何新数据。就好像用户根本没有输入任何东西一样。直到他们刷新页面,即:当他们刷新时,Repeater 更新并显示新数据。
为什么 LINQ 查询没有在回发时给我新的数据?
最佳答案
您的点击事件发生在 Page_Load 之后。因此在添加新数据之前中继器被反弹。在 PreRender 中进行数据绑定(bind)。
关于c# - 为什么我的 LINQ 查询给我的是旧数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21768529/