WPF DataGrid 获取选中 一行 或者 多行
WPF中DataGrid使用时,需要将其SelectedItem转换成DataRowView进行操作
然而SelectedItem 与SelectedItems DataGrid的SelectionUnit跟SelectionMode两个属性的取值不同时有变化
一:当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;
}
WPF DataGrid 获取选中 一行 或者 多行的更多相关文章
- c# WPF DataGrid 获取选中单元格信息
private void Dg_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e) { Console.Write ...
- 【转】WPF DataGrid 获取选中的当前行某列值
方法一:DataRowView mySelectedElement = (DataRowView)dataGrid1.SelectedItem; string result = mySelectedE ...
- WPF DataGrid 获取选中的当前行某列值
方法一: DataRowView mySelectedElement = (DataRowView)dataGrid1.SelectedItem; ]ToString(); 方法二: var a = ...
- WPF DataGrid获取选择行的数据
在WPF中,单击DataGrid,如何获取当前点击的行? 比如在MouseDoubleClick事件中,事实上获取的选中行是一个DataRowview,你可以通过以下的方法来获取选中行的数据,需要引用 ...
- WPF TextSelection获取选中部分内容
一.简单实例 //TextSelect继承自TextRange TextSelection selection = richTextBox.Selection; //1.获取选中内容 string r ...
- wpf ComboBox 获取选中项的文本内容
一:根据数据源类型获取选中项 类: public class Region { public int REGION_ID { get; set; } public string REGION_CODE ...
- WPF datagrid 获取行或单格为NULL 问题
datagrid 属性 EnableRowVirtualization 设置为 false 解决...不要问我为什么. 害死我了
- jquery easyui datagrid 获取选中多行
var rows = $('#dataTable').datagri('getSelections');
- WPF DataGrid 增加"更新"模板列,根据行Row的选择而显示"更新"按钮
SelectionMode="Single" <DataGridTemplateColumn Header=""> <DataGridTemp ...
随机推荐
- php在字符串中替换多个字符
php替换多个字符串str_replace函数 echo str_replace(array("m","i"),array("n",&quo ...
- TOJ 2446: Mint
2446: Mint Time Limit(Common/Java):2000MS/20000MS Memory Limit:65536KByteTotal Submit: 4 ...
- 【luogu】P1772物流运输(最短路+DP)
题目链接 对于本题我们设ext[i][j]计算第i个码头在前j天总共有几天不能用(其实就一前缀和),设dis[i][j]是从第i天到第j天不变运输路线的最短路径,设f[i]是前i天运输货物的最小花费. ...
- 刷题总结——路径(ssoi)
题目: 题目背景 CF 57D 题目描述 小美今天和她的好朋友在玩捉迷藏游戏.地图可以抽象成一张 n*m 的图,地图上有一些障碍.但这些障碍有一些性质:1:每个障碍周围 8 个格子是没有障碍的.2:每 ...
- 素数判定 2(codevs 1702)
题目描述 Description 一个数,他是素数么? 设他为P满足(P<=263-1) 输入描述 Input Description P 输出描述 Output Description Yes ...
- 页面中用Context.Handler传递
最近被WCF弄得身心疲惫.今天抽空看了一下页面传值的一些技巧.传统的cookie session 什么的就不介绍了 今天介绍Context的用法 首先要应用using System.Runtim ...
- OI 数论整理
1.素数: 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数. 2016 ...
- msp430入门学习42
msp430的其他十 msp430入门学习
- 表单form-input标签禁止聚焦输入
1.input标签禁止聚焦输入(针对小程序) <input type="text" disabled /> input标签禁止聚焦输入(针对网页html) 1).< ...
- (7)ASP.NET WEB服务器控件
1. <body> <form id="form1" runat="server"> <div> <asp:Label ...