2016-12-06 24 views
1

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

回答

0

我建議你試試這樣說:

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

相關問題