【问题标题】:Get selected record from datagrid wpf?从datagrid wpf中获取选定的记录?
【发布时间】:2011-04-12 10:41:40
【问题描述】:

我有图片中的桌子。根据 post field checkbox ,如果它被选中,我会写入一个文件并从我的数据库中删除这些记录。如果它未检查的记录将保留在我的数据库中。问题是当我尝试访问这些记录时,我得到一个异常(找不到那个 onject),因为我试图用 datagrid.SelectedIndex 访问它给我 datagrid 索引而不是记录指数。有没有办法获取记录索引?我将自动索引作为每条记录的唯一 ID 递增 1。

提前致谢

【问题讨论】:

  • 我找到了答案,System.Windows.Controls.DataGrid dataGrid = sender as System.Windows.Controls.DataGrid; DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(e.Row.Item); BridgeDesktopApp.SalesOrder nn = (SalesOrder) row.Item; int xcxc = nn.orderId;

标签: c# wpf datagrid indexing


【解决方案1】:

如果您使用视图模型或其他东西,您可以简单地使用命令和选定的 datagridrow 作为命令参数。在您的命令中,您可以轻松访问您的下划线数据并检查您的“发布”属性并写入您的文件并从您的集合中删除该行。

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

【讨论】:

    猜你喜欢
    • 2016-10-13
    • 2021-03-31
    • 2014-07-14
    • 2011-04-24
    • 1970-01-01
    • 2015-06-12
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多