我是一个DataGrid,其中Data来自DataSet并且DataGrid已设置
AutoGenerateColumns="true"
现在我想通过代码使用DataGrid.Columns.Insert(6,Column)在索引6处添加一列;
问题是DataGrid似乎没有列。我得到了索引应该在范围内的错误。
当我试图计算列时,它会显示evertime 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 :(得分:3)
您可以在加载数据网格后对列进行计数,因此您只需添加
即可myDataGrid.Loaded+=(s,o)=>
{
MessageBox.Show(myDataGrid.Columns.Count.ToString());
};
答案 1 :(得分:1)
在绑定后,列会出现在gridview中,您将在此之前添加。您最好在数据表中添加该列并将其与gridview绑定。
答案 2 :(得分:0)
试试这个:
dataGridView1.DataSource = YourDataset;
dataGridView1.DataMember = "The name of the table inside your dataset";
然后尝试其余的。 它应该工作......