2013-12-12 129 views
1

我有一個數據網格通過數據綁定實體框架鏈接到數據庫。它有3列,當應用程序運行時,用戶可以直接在數據網格中添加新行。繼XAML代碼:如何在運行時獲取datagrid單元格值(C#WPF)?

<DataGrid Name="dataGridIMP" Height="115" HorizontalAlignment="Left" VerticalAlignment="Top" AutoGenerateColumns="False" 
    GridLinesVisibility="None" ItemsSource="{Binding}" CellEditEnding="dataGridIMP_CellEditEnding"> 
<DataGrid.Columns> 
    <DataGridComboBoxColumn Header="Importação" x:Name="colunaImp" DisplayMemberPath="Ref" 
      SelectedValuePath="OID" SelectedValueBinding="{Binding Path=OIDImportacao}" /> 
    <DataGridComboBoxColumn Header="Finalidade Pag" x:Name="colunaFinalidade" DisplayMemberPath="Nome" 
      SelectedValuePath="OID" SelectedValueBinding="{Binding Path=OIDTipoPagamento}"/> 
    <DataGridTextColumn Header="Valor" Width="100" Binding="{Binding Path=ValorPorImportacao, Converter={StaticResource ConvDolarTexto}}"/> 
</DataGrid.Columns> 

在運行時,用戶從DataGrid的前兩列(DataGridComboBoxColumns)的組合框選擇數據後,應用程序應該從細胞(列),這些信息,執行一些免費的查詢/計算,並填寫第三列的建議值。

我已經嘗試通過獲取對象的實體價值做:

var rel = dataGridIMP.SelectedItem as RelacaoImpCboFIN; 
int val1 = rel.OIDImportacao    //get the first column value (using entity object) 
int val2 = rel.OIDTipoPagamento    //get the second column value (using entity object) 

rel.ValorPorImportacao = somevalue   //set the third column value (using entity object) 

但用戶進入到下一行之後的數據纔會被分配到實體對象。有誰知道如何才能在用戶編輯每個單元格後獲取datagrid列(單元格)值?

回答

0

您是否嘗試過CellEditEnding事件? eventargs有一個'EditingElement'屬性,它會給你實際的編輯元素(在這種情況下是ComboBox),你可以用它來找到單元格中的'SelectedValue'。

+0

謝謝,工作完美!!!! – rafilho

+0

嗨Ajs,你的解決方案工作正常,以獲得正在編輯的單元格的值。是否有一種方法可以同時從同一行中的另一個單元獲取值? – rafilho

+0

我相信'e.Row.DataContext'將實際的綁定對象返回給該行。您可以使用它來訪問所有必需的屬性。 – AjS

相關問題