2012-10-31 170 views
2

I`ve數據網格其中的數據來自數據集和數據網格被設置DataGrid.Columns.Count始終爲0

AutoGenerateColumns="true" 

現在我想在索引6通過代碼數據網格添加一列。 Columns.Insert(6,Column);

問題是DataGrid似乎沒有列。我得到了該指數應該在範圍內的錯誤。

當我試圖計數列顯示超時0.但我看到所有的數據。

有沒有什麼竅門或爲什麼列數等於0

下面是一些代碼:
XAML的DataGrid:

<DataGrid AutoGenerateColumns="True" AutoGeneratingColumn="DataGrid_AutoGeneratingColumnHandler" HorizontalAlignment="Stretch" Name="dgJournal" VerticalAlignment="Stretch" UseLayoutRounding="True" Margin="8,65,8,30" HorizontalGridLinesBrush="Blue" RowHeaderWidth="25" VerticalGridLinesBrush="Blue" MouseDoubleClick="DataGrid_CellDoubleClick" DataGridCell.Selected="DataGrid_GotFocus" /> 


欄將被添加:

private DataGridTemplateColumn CreateCheckBoxColumn() 
    { 
     MdlSettings modSett = new MdlSettings(); 
     DataGridTemplateColumn tempCol = new DataGridTemplateColumn(); 
     tempCol.Header = "S"; 


     FrameworkElementFactory factory = new FrameworkElementFactory(typeof(CheckBox),"ownselect"); 

     DataTemplate voidTemplate = new DataTemplate(); 
     voidTemplate.VisualTree = factory; 
     tempCol.CellTemplate = voidTemplate; 
     Style chkBoxStyle = new Style(); 
     chkBoxStyle.Setters.Add(new EventSetter(CheckBox.CheckedEvent, new RoutedEventHandler(this.check_CheckBox))); 
     chkBoxStyle.Setters.Add(new EventSetter(CheckBox.UncheckedEvent, new RoutedEventHandler(this.check_CheckBox))); 
     chkBoxStyle.Setters.Add(new Setter(CheckBox.IsCheckedProperty, true)); 
     chkBoxStyle.Setters.Add(new Setter(CheckBox.IsThreeStateProperty, false)); 
     tempCol.CellStyle = chkBoxStyle; 


     return tempCol; 
    } 
+0

一些代碼請:) –

回答

1

列綁定後進入gridview,你會在此之前添加。您最好在數據表中添加列並使用gridview綁定它。

+0

我已經設置DataGrid的像的ItemsSource :datagrid.ItemsSource = dataset.Tables [0] .DefaultView。 – thohei

0

試試這個:

  dataGridView1.DataSource = YourDataset; 
     dataGridView1.DataMember = "The name of the table inside your dataset"; 

然後嘗試休息。 它應該工作...

+0

這是WPF中的DataGrid,我認爲沒有DataSource可用。 – thohei

+0

對不起,沒有看到你的標籤...如果是這樣的話,那麼@Adil是正確的 –

+0

在WinForms我已經試過了,它工作得很好。但WPF應該更適合新的應用程序。但是WPF似乎比WinForms更困難 – thohei

3

您可以在DataGrid加載後的列數,所以你只需要添加

myDataGrid.Loaded+=(s,o)=> 
{ 
    MessageBox.Show(myDataGrid.Columns.Count.ToString()); 
};