如何从实体对象数据源检索数据子集并传递到另一个页面

时间:2010-10-08 11:43:13

标签: asp.net entity-framework gridview

我现在正在尝试自学一点实体框架。

我使用实体框架将Gridview数据绑定到实体日期源。如果我选择该列表中的某些项目,那么我希望重定向另一个页面并仅使用所选项目填充另一个gridview(但具有更多细节,不同的包含/导航属性)

这可能是最简单的事情,但我花了2个小时在墙上试着让它发挥作用。

基本上我有一个继续按钮,当点击它时应该识别行的所有UID(gridview中的一列),并允许我只是这些行的子集并将它们传递给另一个页面以反弹到另一个数据网格

任何想法???

2 个答案:

答案 0 :(得分:1)

嗯,大局是你应该获取这些ID,将它们传递给另一页,然后使用Contains的查询;看到这个问题,了解如何使用它:
How search LINQ with many parametrs in one column?

答案 1 :(得分:1)

假设您没有在GridView中使用DataKeys,这将是我的方法。

Page 1

    protected void Button1_Click(object sender, EventArgs e)
    {
        var checkedItems = new List<int>();

        foreach (GridViewRow row in GridView1.Rows)
        {
            var checkbox = (CheckBox)row.FindControl("CheckBox1");

            if (checkbox.Checked)
            {
                checkedItems.Add(int.Parse(row.Cells[1].Text));
            }
        }

        Session["checkedItems"] = checkedItems;

        Response.Redirect("Page2.aspx");
    }

第2页

    protected void Page_Load(object sender, EventArgs e)
    {
        var checkedItems = (List<int>)Session["checkedItems"];
        Session["checkedItems"] = null;

        foreach (var checkedItem in checkedItems)
        {
            Response.Write(checkedItem);
        }
    }

使用checkedItems列表中的ID,您现在可以查询来自DB的那些ID,最后将结果分配给第二页上的GridView。

您可以通过QueryString传递ID,而不是使用Session。