c# - 为什么我的 LINQ 查询给我的是旧数据?

标签 c# asp.net linq

我在 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/

相关文章:

c# - 在 Entity Framework 中的组内排序

C# 连接到西门子 Hipath 3000

c# - 哪种模型使用 linq、外键关系或本地列表最快?

jquery - ASP.Net 服务器控制、回发架构在当前的 Web 2.0 世界中失败了吗?

c# - 如何从按钮中删除禁用属性?

c# - 如何禁用我的 ASP.NET 应用程序的某些 API

C# LINQ - 过滤查询

c# - 从 ObservableCollection 中的 ObservableCollection 中的 Linq

c# - 如何使用带有动态查询的 LINQ 定义 SELECT TOP?

c# - 如何使选项卡的名称在 C# 中可编辑?