-----WPF DataGrid新手问题--------------------------@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

kong19 2012-03-01 03:23:57
WPF中

从CSV文件读取数据,存到List<string[]> data中,比如现在5行19列数据,全部取得后。

根据CSV文件列数生成的ColumnHeaderText A B C D 。。。类似Excel,

DataGridTextColumn dc = new DataGridTextColumn();
dc.Header = GetHeader(XXX);
this.dataGrid1.Columns.Add(dc);

循环中 Column加完之后,dataGrid的ItemSource设定。

dataGrid1.ItemsSource = data;

问题
Header显示正常,datagrid中也是5行19列,但全都是空白。debug看到data中的数据都正常取得了。

顺便再问一个问题
生成的5行空白行,点击键盘的Del就可以被删除,这个怎么屏蔽掉。不让删除


...全文
133 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kong19 2012-03-01
  • 打赏
  • 举报
回复
DataGridTextColumn 可以在cs里面添加吗,
可以的话怎么设置Binding?

不行的话我就自己做个DataTable,把CSV的内容读到DataTable里面。
kong19 2012-03-01
  • 打赏
  • 举报
回复
DataGridTextColumn 可以在cs里面添加吗,
可以的话怎么设置Binding?

不行的话我就自己做个DataTable,把CSV的内容读到DataTable里面。
kong19 2012-03-01
  • 打赏
  • 举报
回复
多谢老大的回答。

但是我这个是根据CSV文件行长度的不同,列数是可变的,列表头我可以自己生成出来。
但是CSV文件读出来的一行数据就是一个string[], 里面没有字段名,怎么能和我的列对应上阿。非要按名字,不可以按顺序来赋值吗?
q107770540 2012-03-01
  • 打赏
  • 举报
回复
Sorry: IsReadOnly="True" AutoGenerateColumns="False"
XAML内为DataGrid添加<DataGrid.Columns>


<DataGrid.Columns>

<DataGridTextColumn Binding="{Binding 要绑定的字段名}" Width="Auto" Header="Name" />
<DataGridTextColumn Binding="{Binding 要绑定的字段名}" Width="Auto" Header="SubArea" />
<DataGridTextColumn Binding="{Binding 要绑定的字段名}" Width="Auto" Header="Result" />
...
</DataGrid.Columns>
kong19 2012-03-01
  • 打赏
  • 举报
回复
data是一个List<string[]> 没有DefaultView
junsheng 2012-03-01
  • 打赏
  • 举报
回复
这样不知行不行dataGrid1.ItemsSource = data.DefaultView;
kong19 2012-03-01
  • 打赏
  • 举报
回复
或者我不用ItemSource, 有没有办法,让我AddRow这样的去一条一条自己添加数据。
kong19 2012-03-01
  • 打赏
  • 举报
回复
<DataGrid AutoGenerateColumns="True" Height="200" HorizontalAlignment="Left" Name="dataGrid1" VerticalAlignment="Top" Width="466" Grid.Row="0" Grid.ColumnSpan="3" CanUserSortColumns="False" CanUserDeleteRows="True" CanUserAddRows="True" IsReadOnly="True">
</DataGrid>


isReadOnly设置为true了。

数据还是空白,而且后面多出来7列
Length LongLength Rank SyncRoot IsReadOnly IsFixedSize IsSynchronized
kong19 2012-03-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 q107770540 的回复:]

1. dataGrid1 设置AutoGeneralColums=true

2. dataGrid1 设置ReadOnly=true
[/Quote]


<DataGrid AutoGenerateColumns="True" Height="200" HorizontalAlignment="Left" Name="dataGrid1" VerticalAlignment="Top" Width="466" Grid.Row="0" Grid.ColumnSpan="3" CanUserSortColumns="False" CanUserDeleteRows="True" CanUserAddRows="True" >
</DataGrid>


没有ReadOnly啊。。
而且现在显示的还是空白。。
q107770540 2012-03-01
  • 打赏
  • 举报
回复
1. dataGrid1 设置AutoGeneralColums=true

2. dataGrid1 设置ReadOnly=true
梦里独赏花 2012-03-01
  • 打赏
  • 举报
回复
我们做项目都是用ListBox绑定数据源ListBox.ItemsSource = dt.DefaultView;
还没有用dataGrid绑定过数据源
不知道dataGrid1.ItemsSource = data.DefaultView是否等价于dataGrid1.ItemsSource = data;

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧