Datagrid显示架构信息而不是实际数据

时间:2018-03-27 15:07:19

标签: c# wpf wcf

我编写了一些代码用于连接到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"];

1 个答案:

答案 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>