zoukankan      html  css  js  c++  java
  • WPF DataGrid 获取选中 一行 或者 多行

    WPF中DataGrid使用时,需要将其SelectedItem转换成DataRowView进行操作

    然而SelectedItem SelectedItems DataGrid的SelectionUnitSelectionMode两个属性的取值不同时有变化

    一:当DataGrid.SelectionUnit == DataGridSelectionUnit.FullRow时,获取选中一行与多行的方法:

    1选中多行

    int count = DataGrid.SelectedItems.Count;  

     DataRowView[] drv = new DataRowView[count];  

     for (int i = 0; i < count; i++)  

      {  

       drv[i] = DataGrid.SelectedItems[i] as DataRowView;  

     }  

      return drv;  

    2选中一行

    DataGrid.SelectedItem as DataRowView  

     

    二:但是当DataGrid.SelectionUnit 的属性是Cell或者CellOrRowHeader时,并且SelectionMode的值为 Extented时,这样处理就不太好。因为如果选中的是 cell 则SelectedItem的值为null。所以可以通过Cell来统一处理,无论SelectionUnit 的值是什么,总有选中的单元格,通过单元格确定该行。

    private DataRowView GetSelectedRow()  

     {  

             /*优化  

      * 无论 DataGrid的SelectionUnit跟SelectionMode两个属性取任何值 

    * 都存在选中的单元格 

    * 可以根据选中的单元格做统一处理,获取选中的行 

     *  GetSelectedRows()方法获取选中多行原理相同 

    */  

             if (DataGrid != null && DataGrid.SelectedCells.Count != 0)  

      {  

        //只选中一个单元格时:返回单元格所在行  

    //选中多个时:返回第一个单元格所在行  

       return DataGrid.SelectedCells[0].Item as DataRowView;  

      }  

     

        return null;  

      }  

    /// <summary>  

    /// 私有方法 获取选中的多行  

    /// </summary>  

      /// <returns></returns>  

      private DataRowView[] GetSelectedRows()  

     {  

     //当选中有多个单元格时,获取选中单元格所在行的数组  

     //排除数组中相同的行  

    if (DataGrid!=null&&DataGrid.SelectedCells.Count > 0)  

    {  

     DataRowView[] dv = new DataRowView[DataGrid.SelectedCells.Count];  

     for (int i = 0; i < DataGrid.SelectedCells.Count; i++)  

     {  

    dv[i] = DataGrid.SelectedCells[i].Item as DataRowView;  

                 }  

    //因为选中的单元格可能在同一行的,需要排除重复的行  

      return dv.Distinct().ToArray();  

      }  

     return null;  

         }  

  • 相关阅读:
    技术人员如何创业《四》- 打造超强执行力团队(转载)
    技术人员如何创业《一》—— 产品及想法(转载)
    一页纸商业计划书 (Business Plan) 模板(转载)
    公司项目架构的演变过程
    腾讯云CentOS 6.6安装 Nginx
    创业公司一年工作总结
    启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
    windows下使用批处理脚本实现多个版本的JDK切换
    Java后端WebSocket的Tomcat实现
    微信开发学习总结(三)——开发微信公众号的最基本功能——普通消息的接收和回复
  • 原文地址:https://www.cnblogs.com/sjqq/p/6950978.html
Copyright © 2011-2022 走看看