2014-01-20 86 views
3

嘗試綁定WPF中的DataTable時,第一列值在DataGrid中未顯示。Wpf Datagrid在綁定時不顯示一列

Code

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

列的名稱不能包含點或空格字符,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和其他人。 – 2014-01-20 05:40:35

+1

@RajaRaja Cholan:是的,點可以在列名中,我自己也試過了,只是WPF DataBinding引擎不支持DataColumn中的點名。我會編輯我的答案,使其更清晰。謝謝。 –

+1

非常好,我給+1提供了一個完整的解決方案。 :-) – Sagotharan

2

更換_dt.Columns.Add("S.No");_dt.Columns.Add("S_No");_dt.Columns.Add("S-No");