如何向 DataGrid 添加行?
How add row to DataGrid?
我有编辑 XML 文件的小程序。我使用 XMLDataProvider:
<Grid.DataContext>
<XmlDataProvider x:Name="XMLData" Source="/database/stroyka1.bas" XPath="JobArray/job"/>
</Grid.DataContext>
和数据网格:
<DataGrid
Name="JobsDataGrid"
ItemsSource="{Binding}"
AutoGenerateColumns="false" Height="Auto" Width="Auto"
IsReadOnly="False" CanUserAddRows="True">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding XPath=id, Mode=TwoWay}" />
<DataGridTextColumn Header="Название" Binding="{Binding XPath=name, Mode=TwoWay}" />
<DataGridTextColumn Header="Цена за единицу" Binding="{Binding XPath=price, Mode=TwoWay}"/>
<DataGridTextColumn Header="Единица измерения" Binding="{Binding XPath=measure, Mode=TwoWay}"/>
</DataGrid.Columns>
</DataGrid>
如何在table下方启用一个空行? CanUserAddRow=true
和 IsReadOnly=false
无效。我尝试将带有空白参数的行添加到 DataGrid,但出现错误:
Operation is not allowed when using ItemsSource. Instead, access and modify elements using ItemsControl.ItemsSource.
Here是解释。 ItemsSource 集合必须实现一些接口才能工作。
非常感谢,但是我找到了方法,但是我对这个问题很无奈。我使用此代码:
private void AddNewRowMenuItem_OnClick(object sender, RoutedEventArgs e)
{
job pipainput = new job(JobsDataGrid.Items.Count+1,"",0,"");
XmlSerializer xmls = new XmlSerializer(typeof(job));
var sb = new StringBuilder(512);
using (System.IO.StringWriter sw = new System.IO.StringWriter(sb))
{
xmls.Serialize(sw, pipainput);
}
XmlDocument xmlk = new XmlDocument();
xmlk.LoadXml(sb.ToString());
XmlNode pipa = XMLData.Document.ImportNode(xmlk.ChildNodes[1], true);
XMLData.Document.DocumentElement.AppendChild(pipa);
}
工作时 - 我的 class。完美运行。
我有编辑 XML 文件的小程序。我使用 XMLDataProvider:
<Grid.DataContext>
<XmlDataProvider x:Name="XMLData" Source="/database/stroyka1.bas" XPath="JobArray/job"/>
</Grid.DataContext>
和数据网格:
<DataGrid
Name="JobsDataGrid"
ItemsSource="{Binding}"
AutoGenerateColumns="false" Height="Auto" Width="Auto"
IsReadOnly="False" CanUserAddRows="True">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding XPath=id, Mode=TwoWay}" />
<DataGridTextColumn Header="Название" Binding="{Binding XPath=name, Mode=TwoWay}" />
<DataGridTextColumn Header="Цена за единицу" Binding="{Binding XPath=price, Mode=TwoWay}"/>
<DataGridTextColumn Header="Единица измерения" Binding="{Binding XPath=measure, Mode=TwoWay}"/>
</DataGrid.Columns>
</DataGrid>
如何在table下方启用一个空行? CanUserAddRow=true
和 IsReadOnly=false
无效。我尝试将带有空白参数的行添加到 DataGrid,但出现错误:
Operation is not allowed when using ItemsSource. Instead, access and modify elements using ItemsControl.ItemsSource.
Here是解释。 ItemsSource 集合必须实现一些接口才能工作。
非常感谢,但是我找到了方法,但是我对这个问题很无奈。我使用此代码:
private void AddNewRowMenuItem_OnClick(object sender, RoutedEventArgs e)
{
job pipainput = new job(JobsDataGrid.Items.Count+1,"",0,"");
XmlSerializer xmls = new XmlSerializer(typeof(job));
var sb = new StringBuilder(512);
using (System.IO.StringWriter sw = new System.IO.StringWriter(sb))
{
xmls.Serialize(sw, pipainput);
}
XmlDocument xmlk = new XmlDocument();
xmlk.LoadXml(sb.ToString());
XmlNode pipa = XMLData.Document.ImportNode(xmlk.ChildNodes[1], true);
XMLData.Document.DocumentElement.AppendChild(pipa);
}
工作时 - 我的 class。完美运行。