【发布时间】:2018-09-06 01:48:12
【问题描述】:
我已经编写了一些代码,用于连接到 WCF 服务并使用对 SQL Server 的存储过程调用显示来自 IEnumerable<Dataset> 的数据。
我使用 WCF 客户端对其进行了测试,它返回:WCF Test client result 我不确定这是否正确,但它似乎是唯一可行的方法。
在 WPF 中,它似乎连接并填充字段,但使用架构信息,而不是数据集中的表。我附上截图供参考。Client interface
我已经看到这个线程告诉 DataGrid 你要设置哪个表: DataGridView not displaying data while DataSet contains the data
但是,这似乎不适用于我的情况,因为IEnumerator<> 不包含方法“表”。但我觉得重点保持不变,即我需要告诉 DataGrid 我真正想要显示的内容。在谷歌上搜索了几个小时后,我终于到了。
我也尝试过声明IQueryable 并使用.Contains 方法,但这也不起作用。
这是MainWindow.xaml.cs中的代码:
public partial class MainWindow : Window
{
// private CollectionViewSource CollectionView;
public MainWindow()
{
InitializeComponent();
FillDataGrid();
}
private void FillDataGrid()
{
MBMService.IMBMExtClientService Client = new MBMService.MBMExtClientServiceClient();
IEnumerable<DataSet> ds;
ds = Client.GetData();
MainGrid.ItemsSource = ds;
}
}
这是 WCF 接口:
[ServiceContract]
public interface IMBMExtClientService
{
[OperationContract]
IEnumerable<DataSet> GetData();
}
这是 WCF 实现:
public class MBMExtClientService : IMBMExtClientService
{
public IEnumerable<DataSet> GetData()
{
//call to NYSESQLConnect class and run constructor
NYSESQLConnect Connect = new NYSESQLConnect();
return Connect.GetDataSet();
}
}
编辑:也试过这个无济于事
MBMService.IMBMExtClientService Client = new MBMService.MBMExtClientServiceClient();
DataSet[] ds = Client.GetData();
//MainGrid.ItemsSource = ds[0];
MainGrid.DataContext = ds.ElementAt(0).Tables["NYSEStockData"];
【问题讨论】: