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

时间:2011-08-08 21:49:00

标签: c# database visual-studio-2010 silverlight-4.0

我正在使用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仍为null。 TrackAnimation()就像endNode有一个有效值一样,但在Load语句之外,endNode又回到了null。

我知道我对如何运作缺乏了解,我非常感谢给予的帮助。

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

我希望endNode具有可以在其他方法中使用的值。

请帮我弄清楚这样做的方法,谢谢!

编辑:

谢谢你,SLaks

我可以这样做:

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);
     }
 queryres.Completed += new EventHandler(queryres_Completed);




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

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

1 个答案:

答案 0 :(得分:1)

您的Load方法可能是异步的,这意味着回调会在其余代码运行后的某个时间发生。

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