Wpf数据网格绑定时未显示一列

3

在尝试将DataTable绑定到WPF时,DataGrid中不显示第一列的值。

代码

private DataTable _dt;

public DataTable DataTable
{
    get { return _dt; }
    set { _dt = value; }
}

public Controls()
{
    InitializeComponent();

    _dt = new DataTable("Table");
    _dt.Columns.Add("S.No");
    _dt.Columns.Add("Name");

    for (int i = 1; i <= 10; i++)
    {
        _dt.Rows.Add(""+i, "Name "+ i);
    }

    dataGrid1.DataContext = _dt;                
}

XAML

<DataGrid AutoGenerateColumns="True"
          Height="131" 
          ItemsSource="{Binding}"
          HorizontalAlignment="Left"              
          Name="dataGrid1" 
          VerticalAlignment="Top" 
          Width="359" />

Output missing Serial Number in DataGrid

2个回答

2

列名不能包含点号或空格,DataBinding不支持在列名中使用点号。这不仅仅在DataGrid AutoGenerateColumns中无法工作,而是在绑定系统的任何地方都无法工作。

尝试将S.No更改为只读取No,如下代码所示:

_dt = new DataTable("Table");
_dt.Columns.Add("No");
_dt.Columns.Add("Name");

DataRow dr = _dt.NewRow();

for (int i = 1; i <= 10; i++)
{
    _dt.Rows.Add(""+i, "Name "+ i);                
}

dataGrid1.DataContext = _dt;

2
你的信息有点错误,DataGrid列名接受点字符 - 参见OP截图。但问题在于列数据绑定。这就是为什么我建议在之前的答案中更改列名。请更正您的信息,因为它会让OP和其他人感到困惑。 - user1173363
1
@RajaRaja Cholan:是的,点可以出现在列名中,我自己也试过,只是 WPF DataBinding 引擎不支持 DataColumn 名称中的点。我会编辑我的答案以使其更清晰。谢谢。 - Anatoliy Nikolaev
1
很棒,我给一个+1的完整解决方案。 :-) - Sagotharan
1
同样适用于使用斜杠字符'/'(例如,“日期/时间”不能作为列名。请改用“DateTime”)。 - fab

2

_dt.Columns.Add("S.No");替换为_dt.Columns.Add("S_No");_dt.Columns.Add("S-No");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接