已知得到一个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");
}
无法显示。。。。唉
问题应该出在getDataFromTable方法上,楼主检查下这个方法的实现
测试 getDataFromTable方法没问题 返回一个list
@我爱吃鱼: 把代码打个包上来,还有list里面的数据,你模拟出来看看,有可能是数据有错误或者grid的列绑定有错误
@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内会出现三行空白
@az235:
是否需要 在 xaml里把列表分好? datagrid是自动生成列表的吗? 网上好多例子是用binding的,必须得用bingding指定哪一列显示什么?
@我爱吃鱼: AutoGenerateColumns="False" 把这个改为true,如果AutoGenerateColumns="False" 表格字段的显示就要靠我们手动去完成了(也就是需要binding方式去确定显示的列)。这个也是数据绑定的重点,因为实际应用中我们大多都是自定义去完成DataGrid的数据绑定。
你这个cc.getDataFromTable("ab");方法返回的是一个什么东西。dataGrid1.ItemsSource可以直接绑定 List集合
测试 getDataFromTable方法没问题 返回一个list
是否需要 在 xaml里把列表分好? datagrid是自动生成列表的吗?
@我爱吃鱼: 问题还没解决?给个示例给你
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>
this.DG_Expenses.AutoGenerateColumns = true; //自动生成列