2

DataSet からデータが取得され、DataGrid が設定されている DataGrid があります。

 AutoGenerateColumns="true"

ここで、DataGrid.Columns.Insert(6, Column); を使用してコードを使用して、インデックス 6 に列を追加したいと考えています。

問題は、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;
    }
4

3 に答える 3

3

データグリッドがロードされた後に列を数えることができるので、追加するだけです

myDataGrid.Loaded+=(s,o)=>
{
   MessageBox.Show(myDataGrid.Columns.Count.ToString());
};
于 2013-11-27T22:08:27.883 に答える
1

バインド後に列がグリッドビューに表示され、その前に追加されます。データ テーブルに列を追加し、それを gridview にバインドすることをお勧めします。

于 2012-10-31T09:33:24.803 に答える
0

これを試して :

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

その後、残りを試してください。それはうまくいくはずです...

于 2012-10-31T09:48:29.187 に答える