Rob*_*Rob 2 c# data-binding wpf stored-procedures
我有一个按钮,单击该按钮将在SQL Server上运行存储过程,并在同一窗口的网格中显示结果数据.
在Windows窗体世界中,我创建一个数据表,使用dataadapter填充它,然后将数据表分配给我的DataGridView的DataSource属性和poof ...这是我的数据.
我在WPF中使用带有Gridview的ListView尝试了类似的东西,我似乎无法使其工作.我的XAML中有以下内容:
<ListView Grid.Row="1" Name="Preview" ItemsSource="{Binding Path=Report}">
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=FormalName}" />
</GridView>
</ListView>
Run Code Online (Sandbox Code Playgroud)
在我的C#代码中
private void CreateReport(object sender, RoutedEventArgs e)
{
DataTable dt = new DataTable("Report");
SqlConnection cn = new SqlConnection("Data Source=DailyTimesheets;
Initial Catalog=DailyTimesheets;Integrated Security=SSPI");
SqlCommand cm = new SqlCommand("Reports.PayrollHoursInterface", cn);
cm.Parameters.AddWithValue("@PayBatchID", 722);
cm.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cm);
da.Fill(dt);
Preview.DataContext=dt;
}
Run Code Online (Sandbox Code Playgroud)
当我单击按钮(触发CreateReport方法)时,我的数据表被填充并分配给Datacontext,但没有显示任何内容.
我做了一个示例应用程序,发现你需要用ListView.View包围你的GridView并将你的ItemsSource设置为{Binding},如下所示:
<ListView Name="Preview" ItemsSource="{Binding}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=FormalName}" />
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)