2011-04-12 70 views
0

我已經拿到了照片中的桌子。根據post field複選框,如果它被選中,我寫入一個文件並從我的數據庫中刪除這些記錄。如果它沒有檢查記錄將保留在我的數據庫。問題是,當我然後嘗試訪問這些記錄我得到一個異常(不能找到onject),因爲我試圖訪問與datagrid.SelectedIndex它給我的數據網格索引,而不是記錄指數。有沒有獲得記錄索引的方法?我的自動索引增加了1,作爲每條記錄的唯一ID。從datagrid wpf中獲取所選記錄?

enter image description here

由於提前

如果你使用一個視圖模型或東西,你可以簡單地使用命令和選擇datagridrow作爲commandparameter
+0

我找到了答案,'System.Windows.Controls.DataGrid的數據網格=發件人作爲System.Windows.Controls。數據網格; DataGridRow row =(DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(e.Row.Item); DataGridRow row =(DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(e.Row.Item); BridgeDesktopApp.SalesOrder nn =(SalesOrder)row.Item; int xcxc = nn.orderId;' – CPM 2011-04-12 13:17:05

回答

0

。在您的命令中,您可以輕鬆訪問您的下劃線數據,並檢查您的「發佈」屬性以及您的文件,並從收藏中刪除該行。

<Buttons Command="{Binding WriteCommand}" CommandParameter="{Binding ElementName=MyDataGridCtrl, Path=SelectedItem}" /> 

,如果你有一個DataTable作爲數據源的命令可能看起來像下面

private DelegateCommand<DataRowView> _writeCommand ; 
public ICommand WriteCommand 
    { 
     get 
     { 
      return this._writeCommand ?? 
        (this._writeCommand = new DelegateCommand<DataRowView>(this.WriteCommandExecute, this.CanWriteCommandExecute)); 
     } 
    } 

private bool CanEditDataCommandExecute(DataRowView rowToWrite) 
    { 
     return rowToWrite!= null && (bool)rowToWrite["Post"];//if post is a bool 
    } 

    private void EditDataCommandExecute(DataRowView rowToWrite) 
    { 
     if (!this.CanEditDataCommandExecute(rowToWrite)) 
      return; 

     //do your stuff here 
    }