我编写了一些代码用于连接到WCF服务,并使用对SQL Server的存储过程调用显示来自IEnumerable的数据。
我使用WCF客户端对其进行了测试,并返回:WCF Test client result我不确定这是否正确,但这是唯一可行的。
在WPF中,它似乎连接并填充字段,但是使用架构信息,而不是数据集中的表。我附上了截图供参考。Client interface
我已经看到这个帖子告诉DataGrid你想要设置哪个表: DataGridView not displaying data while DataSet contains the data
然而,这似乎不适用于我的情况,因为IEnumerator<>不包含方法'Tables'。但我觉得这一点仍然是一样的,即我需要告诉DataGrid我真正想要展示的内容。谷歌搜索了几个小时后,我终于来了。
我也试过声明一个IQueriable并使用.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"];
答案 0 :(得分:0)
解决方案是在适当的索引处访问DataSet,这看似很明显,然后使用.Tables方法访问“Table”表。
像这样:
MainGrid.DataContext = ds[0].Tables["Table"];
Microsoft docs中的任何地方都没有记录(惊讶,惊讶)。 *愤怒的反应只有
我希望这个解决方案可以帮助将来的某个人
编辑:另外,万一你错过了,我不得不在xaml的DataGrid中为ItemSource添加Binding
<Grid>
<DataGrid Name="MainGrid" ItemsSource="{Binding}" Height="390"/>
</Grid>