2011-08-08 101 views
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); 
     } 

然而,在这之后,我的变量终端节点仍然是零。 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变量,因为它在另一个方法中声明?

回答

1

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

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

+0

这是否意味着endNode会在某个时候获得一个值? –

+0

@Valerie:只在回调中,在方法本身完成后运行。 – SLaks

+0

谢谢!我有另一个问题要发布,希望你仍然在:) –

相关问题