如何为wpf中的每一行添加特定列中的值?

问题描述:

我是wpf编程世界的新蜜蜂,这是我第一次在这里发布。我通过stackoverflow平台学到了很多东西(感谢这里的每一个人)。我目前的问题是让我在墙上碰撞,因为我无法找到解决方案。 我正在做一个项目,其中我使用数据集作为DataGrid的ItemsSource从Oracle查询结果填充数据网格。 它工作正常,但问题是,我想在我的数据网格中有一个“附加列”(换句话说,我想手动添加一列)。该列未被数据集填充。相反,我想基于自动填充的列之一在手动添加的列中添加/插入值。如何为wpf中的每一行添加特定列中的值?

例如:如果我在列1的值“A6”,手动添加的列应显示在相应小区“执行器”。 请帮助我解决任何可能的解决方案。我会很感激! Idk如果我的问题有意义或者它太宽泛。如果你无法理解任何事情并随时提问,请与我联系。谢谢。

我的XAML:

<DataGrid x:Name="datagrid1" FontSize="12" FontWeight="Bold" IsReadOnly="True" 
        SelectionUnit="FullRow" SelectionMode="Single"        
        VerticalAlignment="Bottom" HorizontalAlignment="Left" Height="Auto" Width="985" Margin="1,5,0,0" 
        CanUserResizeColumns="True" CanUserDeleteRows="False" CanUserAddRows="False" CanUserResizeRows="False" RowHeight="30" 
        CanUserReorderColumns="False" CanUserSortColumns="False" ColumnHeaderHeight="30" ColumnWidth="*"> 

我隐藏:

using (OracleCommand cmd = new OracleCommand("SELECT this, that, these, FROM table " 
                + "WHERE somecolumn=:somecolumn", connection)) 
     { 
      cmd.CommandType = CommandType.Text; 
      OracleParameter parm = new OracleParameter(); 
      cmd.Parameters.Add("somecolumn", input.Text); 
      OracleDataAdapter oda = new OracleDataAdapter(); 
      oda.SelectCommand = cmd; 
      DataSet ds = new DataSet(); 
      oda.Fill(ds, "table"); 
      datagrid1.ItemsSource = ds.Tables["table"].DefaultView; 
      DataGridTextColumn column = new DataGridTextColumn(); //here I am able to add the column to the datagrid but not able to insert values in this column    
      datagrid1.Columns.Add(column); 
+0

对我来说,它看起来像你创建一个列,但你不会将它添加到“绑定”数据集 - 有人告诉我,如果我错了,但你是否尝试将此列添加到你的'ds'?那么你应该可以通过row [x] .column [“...”]并设置值,否? – TripleEEE

+0

看起来你的代码不完整。 '//这里我可以将列添加到数据网格中,但无法在此列中插入值。

+0

是的,我不是将列添加到“绑定”数据集,因为我不知道它。你能用代码示例展示它吗? @TripleEEE – Zak29

我建议你试试这样说:

//... 
DataSet ds = new DataSet(); 
oda.Fill(ds, "table"); 
var table = ds.Tables["table"]; 
table.Columns.Add("Columnname",typeof(string)); 
table.Columns["Columname"].DefaultValue = "Actuator"; 
datagrid1.ItemsSource = table.DefaultView; 

如果你想设置不同的行你可以这样走:

table.Rows[0]["Columnname"] = "somewhat"; 

希望这可以帮助我们讨论后评论。

+0

BANG ON !!!! MATE,你让我的一天!我不能够感谢你。 你绝对正确,我将新列添加到数据网格中,而不是将其添加到数据集中。 它的工作原理。再次感谢:)) – Zak29

+0

@ Zak29罚款,我可以帮你:)现在与你的项目好看:)) – TripleEEE