如何将DataGrid绑定到Web服务返回的DataSet?

时间:2009-06-27 08:54:58

标签: silverlight datagrid

我正在使用Silverlight和Web服务创建RIA应用程序。 Web服务的方法返回DataSet(在system.data中找到的经典ASP.NET数据集)。

如何将Silverlight的DataGrid与Web服务返回的DataSet绑定?

2 个答案:

答案 0 :(得分:1)

SL不支持数据集。如果您已经修复了数据源,那么您可以创建数据契约(属性类)并通过可观察集合传输数据,您可以轻松地将其与数据网格绑定。

但是如果你想要一些你希望与SL Datagrid绑定的泛型,那么在这种情况下你必须创建集合集合

IEnumerable<IDictionary<string, string>> LData = new List<IDictionary<string, string>>();
while (sdrdr.Read())
{
  dict = new Dictionary<string, string>();
  for (int i = 0; i < sdrdr.FieldCount; i++)
  {
      dict.Add(sdrdr.GetName(i), sdrdr[i].ToString());
  }
  yield return dict;
}

然后您必须在SL应用程序中使用reflection.emit创建匿名类型,您可以将其与SL Datagrid绑定。

答案 1 :(得分:0)

我认为你会挣扎,因为SL对system.data的访问权限最多,你得到System.Data.Services但不包含你正在谈论的数据集。

如果要从WCF服务返回数据,那么我建议正常的方法是定义一个数据协定类,其中包含每个字段的属性等,并且您的WCF服务方法返回该类的集合。

在代理端,自动生成的代理会将其视为List或ObservableCollection,然后您可以绑定到该代理。因为你需要逻辑并实现INotifyPropertyChanged和其他各种各样的部分,所以最终会有点脏,所以你最终可能会将数据从你被赋予的集合转移到充当VM的本地类中,视图绑定到。