2

我有一个 DataGrid,其中数据来自 DataSet 并且 DataGrid 已设置

 AutoGenerateColumns="true"

现在我想通过 DataGrid.Columns.Insert(6, Column); 的代码在索引 6 处添加一列

问题是 DataGrid 似乎没有列。我得到了索引应该在范围内的错误。

当我试图计算它显示的列时,它总是显示 0。但我看到了所有数据。

是否有技巧或为什么列数等于 0。

这是一些代码:
XAML 数据网格:

<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 回答