使用数据库查询结果,而不是在数据网格中显示

本文关键字:数据 数据网 网格 显示 数据库 查询 结果 | 更新日期: 2023-09-27 18:04:56

我正在使用c#创建一个Silverlight 4应用程序。

我正在尝试做以下事情:

        MapNode endNode = null;
        if (keyword != null && keyword != "")
        {
            EntityQuery<NodeIDProj> res = CampusQueries.getNodeIDByNameQuery(keyword);
            var queryres = CampusQueries.Load<NodeIDProj>(res, (items) =>
            {
                foreach (var item in items.Entities)
                {
                    MapNode n = mapHelp.getNodeByID(item.NodeID);
                    if (n != null)
                    {
                        endNode = n;
                        TrackAnimation();
                    }
                }
            }, true);
         }

然而,在此之后,我的变量endNode仍然为空。TrackAnimation()就像endNode有一个有效值一样工作,但是在Load语句之外,endNode返回null。

我知道我对这是如何工作的理解不足,我将非常感谢您的帮助。

我想做的是查询我的数据库,我想在其他方法中使用这些结果,而不是在数据网格中显示它们。

我希望endNode有一个值,我可以在其他方法中使用。

请帮我想个办法,谢谢!

编辑:

谢谢你,SLaks

我可以这样做吗:

MapNode = null;

    if (keyword != null && keyword != "")
    {
        EntityQuery<NodeIDProj> res = CampusQueries.getNodeIDByNameQuery(keyword);
        var queryres = CampusQueries.Load<NodeIDProj>(res, (items) =>
        {
            foreach (var item in items.Entities)
            {
                MapNode n = mapHelp.getNodeByID(item.NodeID);
                if (n != null)
                {
                    endNode = n;
                    TrackAnimation();
                }
            }
        }, true);
     }
 queryres.Completed += new EventHandler(queryres_Completed);


void queryres_Completed(object sender, EventArgs e)
{
    //stuff
}

如果是这样,我如何访问endNode变量,因为它是在另一个方法中声明的?

使用数据库查询结果,而不是在数据网格中显示

您的Load方法可能是异步的,这意味着回调发生在您的其他代码运行之后的一段时间。

您只能在实际收到结果后使用它。