首页 新闻 搜索 专区 学院

WPF_datagrid_绑定数据问题

0
悬赏园豆:50 [已解决问题] 解决于 2012-09-23 01:02

已知得到一个list数据源

如何在datagrid中显示?

或者使用其他控件显示亦可

xaml代码:

<DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="90,104,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" />

CS#代码

private void Window_Loaded(object sender, RoutedEventArgs e)
{
DBconn cc = new DBconn();
dataGrid1.ItemsSource = cc.getDataFromTable("ab");
}

无法显示。。。。唉 

我爱吃鱼的主页 我爱吃鱼 | 初学一级 | 园豆:5
提问于:2012-09-04 18:07
< >
分享
最佳答案
0

问题应该出在getDataFromTable方法上,楼主检查下这个方法的实现

收获园豆:50
az235 | 大侠五级 |园豆:8283 | 2012-09-04 18:40

测试 getDataFromTable方法没问题 返回一个list

我爱吃鱼 | 园豆:5 (初学一级) | 2012-09-04 22:35

@我爱吃鱼: 把代码打个包上来,还有list里面的数据,你模拟出来看看,有可能是数据有错误或者grid的列绑定有错误

az235 | 园豆:8283 (大侠五级) | 2012-09-04 22:39

@az235: 

xaml文件代码如下:

<Window x:Class="CoordinatePositioningSystem.ResultWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ResultWindow" Height="300" Width="300">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="62,52,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="69,25,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
</Grid>
</Window>

 

CS文件代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using CoordinatePositioningSystem.Controllers;

namespace CoordinatePositioningSystem
{
/// <summary>
/// ResultWindow.xaml 的交互逻辑
/// </summary>
public partial class ResultWindow : Window
{
public ResultWindow()
{
InitializeComponent();
DBconn cc=new DBconn();
dataGrid1.ItemsSource = cc.getDataFromTable("ab");
textBox1.Text = cc.getDataFromTable("ab").Count.ToString();
}
}
}

结果 :如图:text框内能显示list内的数据,而datagrid内会出现三行空白

我爱吃鱼 | 园豆:5 (初学一级) | 2012-09-04 22:52

@az235: 

是否需要 在 xaml里把列表分好?  datagrid是自动生成列表的吗? 网上好多例子是用binding的,必须得用bingding指定哪一列显示什么?

我爱吃鱼 | 园豆:5 (初学一级) | 2012-09-04 23:00

@我爱吃鱼: AutoGenerateColumns="False" 把这个改为true,如果AutoGenerateColumns="False" 表格字段的显示就要靠我们手动去完成了(也就是需要binding方式去确定显示的列)。这个也是数据绑定的重点,因为实际应用中我们大多都是自定义去完成DataGrid的数据绑定。

az235 | 园豆:8283 (大侠五级) | 2012-09-05 09:59
其他回答(2)
0

你这个cc.getDataFromTable("ab");方法返回的是一个什么东西。dataGrid1.ItemsSource可以直接绑定 List集合

icyme | 园豆:77 (初学一级) | 2012-09-04 18:26

测试 getDataFromTable方法没问题 返回一个list

支持(0) 反对(0) 我爱吃鱼 | 园豆:5 (初学一级) | 2012-09-04 22:35

是否需要 在 xaml里把列表分好?  datagrid是自动生成列表的吗?

支持(0) 反对(0) 我爱吃鱼 | 园豆:5 (初学一级) | 2012-09-04 22:37

@我爱吃鱼: 问题还没解决?给个示例给你

xaml代码:

<DataGrid x:Name="DG_Expenses" IsReadOnly="True" AutoGenerateColumns="False"
       HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="0,4,0,0"       HorizontalGridLinesBrush="{x:Null}" VerticalGridLinesBrush="{x:Null}">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Exp_Id}" Visibility="Collapsed"/>
<DataGridTextColumn Header="消费事由" Binding="{Binding Exp_Name}" />
<DataGridTextColumn Header="消费金额" Binding="{Binding Exp_Money}"/>
<DataGridTextColumn Header="备注" Binding="{Binding Exp_Memo}"/>
<DataGridTextColumn Header="消费人" Binding="{Binding Exp_People}"/>
<DataGridTextColumn Header="消费日期" Binding="{Binding Exp_DateString}"/>
<DataGridTextColumn Header="创建日期" Binding="{Binding Exp_CreateDateString}"/>
</DataGrid.Columns>
</DataGrid>

 

后台:

 this.DG_Expenses.ItemsSource = bll.GetExpensesInfo();

 bll.GetExpensesInfo();  方法返回的是一个集合   List<tbl_Expenses>

支持(0) 反对(0) icyme | 园豆:77 (初学一级) | 2012-09-05 14:16
0

this.DG_Expenses.AutoGenerateColumns = true;  //自动生成列

yao__xu | 园豆:202 (菜鸟二级) | 2013-02-27 15:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册