如何添加DataGrid行? [英] How add row to DataGrid?

查看:215
本文介绍了如何添加DataGrid行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个编辑XML文件的小程序。我使用XMLDataProvider:

 < Grid.DataContext> 
< XmlDataProvider x:Name =XMLDataSource =/ database / stroyka1.basXPath =JobArray / job/>
< /Grid.DataContext>

和DataGrid:

 < DataGrid 
Name =JobsDataGrid
ItemsSource ={Binding}
AutoGenerateColumns =falseHeight =AutoWidth =Auto
IsReadOnly =FalseCanUserAddRows =True>
< DataGrid.Columns>
< DataGridTextColumn Header =IDBinding ={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>

如何在表格下方启用空白行? CanUserAddRow = true IsReadOnly = false 不工作。我尝试向DataGrid添加空白参数行,但是有错误:


使用ItemsSource时不允许操作。相反,使用ItemsControl.ItemsSource访问和修改元素。



解决方案

非常感谢,但是找到方法,但我这个问题的拐杖。我使用这个代码:

  private void AddNewRowMenuItem_OnClick(object sender,RoutedEventArgs e)
{
job pipainput =新工作(JobsDataGrid.Items.Count + 1,,0,);
XmlSerializer xmls = new XmlSerializer(typeof(job));
var sb = new StringBuilder(512);

使用(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);
}

工作 - 我的课程。完美无瑕。


I have small program for edit XML-files. I using XMLDataProvider:

<Grid.DataContext>
    <XmlDataProvider x:Name="XMLData" Source="/database/stroyka1.bas" XPath="JobArray/job"/>
</Grid.DataContext>

and DataGrid:

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

How to enable a blank row below the table? CanUserAddRow=true and IsReadOnly=false not work. I tried add row with blank parameters to DataGrid, but have error:

Operation is not allowed when using ItemsSource. Instead, access and modify elements using ItemsControl.ItemsSource.

解决方案

Thanks a lot, but i find method, but i crutch for this question. I use this code:

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);
    }    

when job - my class. Works perfectly.

这篇关于如何添加DataGrid行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆