需求:根据关键字(参会人号码或名称)查找参会人,在datagird 中高亮显示

界面:我在界面上增加了一个文本框和按钮,进行查找操作

操作说明:

根据关键字进行搜索:输入关键字 点击查找,如果找到 以蓝色背景显示整行数据(坑爹的项目经理非让用这个颜色,一点都不好看),找不到进行提示;继续点击查找 寻找下一个匹配项

上代码:

声明了三个变量,next 存储下一个匹配项,list 存储所有匹配项,color 为行背景色

ConfMemberModel next = null;
List<ConfMemberModel> list = new List<ConfMemberModel>();
Color color = new Color() { A = , R = , G = , B = };

变量

搜索按钮事件代码,简单的进行了实现,还可以再优化下,达到更优效果

 private void btnSeach_Click(object sender, RoutedEventArgs e)
{
string txtPhoneno = txtSeach.Text.Trim();
if (txtPhoneno != "")
{
var collection = dataGrid1.ItemsSource as ObservableCollection<ConfMemberModel>; start: if (next == null)
{
next = collection.FirstOrDefault<ConfMemberModel>((cmm) =>
{ if (cmm.Phoneno.Contains(txtPhoneno) || cmm.Data.Contains(txtPhoneno))
{
dataGrid1.SelectedItem = cmm; dataGrid1.Columns.ToList().ForEach(
(dgc) =>
{
FrameworkElement fwElement = dgc.GetCellContent(cmm);
SetRowBG(fwElement, new SolidColorBrush(color));
} );
return true;
} return false;
}); if (next != null)
{
list.Add(next);
}
else
{
var messageBox = new cwConfirmBox();
messageBox.Show("未找到号码" + txtPhoneno);
return;
}
}
else
{
next = collection.FirstOrDefault<ConfMemberModel>((cmm) =>
{ if ((cmm.Phoneno.Contains(txtPhoneno) || cmm.Data.Contains(txtPhoneno)) && !list.Contains(cmm))
{
dataGrid1.SelectedItem = cmm; dataGrid1.Columns.ToList().ForEach(
(dgc) =>
{
FrameworkElement fwElement = dgc.GetCellContent(cmm);
SetRowBG(fwElement, new SolidColorBrush(color));
} );
return true;
}
else
{
dataGrid1.Columns.ToList().ForEach(
(dgc) =>
{
FrameworkElement fwElement = dgc.GetCellContent(cmm);
SetRowBG(fwElement, null);
} );
}
return false;
}); if (next != null)
{
list.Add(next);
}
else
{
list.Clear();
goto start;
} }
}
else
{
var messageBox = new cwConfirmBox();
messageBox.Show("请输入号码!");
return;
}
}

按钮事件

         /// <summary>
/// 设置行背景
/// </summary>
/// <param name="b"></param>
void SetRowBG(FrameworkElement fwElement, Brush brush)
{
DependencyObject dpObject = VisualTreeHelper.GetParent(fwElement); if (dpObject.GetType() == typeof(Grid))
{
var grid = dpObject as Grid; grid.Background = brush; return;
}
else
{
SetRowBG(dpObject as FrameworkElement, brush);
} }

设置背景

原理很简单,就是把所有列的背景进行了改变,此方法对列较少的datagird还行,多了也没测试,不知道性能会有多大影响水平有限,暂时想到的这样操作,希望有大牛能够指点下。

Silverlight 查询DataGrid 中匹配项 ,后台改变选中行颜色的更多相关文章

  1. WPF DataGrid ListView 等等 改变 选中行 颜色;以及 不变的原因

    WPF中改变选中行的颜色是很简单的,就是用触发器:比如:以DataGrid为例: DataGrid.RowStyle Style TargetType= DataGridRow SetterPrope ...

  2. [ 记录 ] Vue 对象数组中一项数据改变,页面不更新

    问题描述:将data中数据列表渲染到页面,循环生成 el-switch,点击页面中 el-switch 后数组中某项值改变,但是页面不更新 数据格式如下 export default{ data(){ ...

  3. 【WPF】通过修改dataGrid的cell的style,改变选中行失去焦点时的颜色

    <Style TargetType="{x:Type DataGridCell}"> <Style.Triggers> <Trigger Proper ...

  4. listview改变选中行字体颜色

    [android]listview改变选中行字体颜色 目标:选中item,其字体设置为#3197FF,未选中的,其字体为#FFFFFF 与listvew设置选中行item背景图片一样,使用select ...

  5. 解决IsEditable="True"的ComboBox在DataGrid中点击一次不能选中行的问题

    原文:解决IsEditable="True"的ComboBox在DataGrid中点击一次不能选中行的问题 此方法很笨拙,并不推荐使用!!! 此方法很笨拙,并不推荐使用!!! 此方 ...

  6. 【android】listview改变选中行背景图片

    [android]listview改变选中行背景图片 目标:当item选中时,改变其背景图片.效果图如下: 直接在listview的xml文件中使用listselector: 1 2 3 4 5 6 ...

  7. 在EasyUI中统一判断是否有选中行,如果有则将选中行数据传入回调函数

    function procossWithSeletedData(func) { var rowData = $("#tbGrid").datagrid("getSelec ...

  8. DataGridView中获取与设置当前选中行以及SelectedRows和CurrentRow注意区分

    场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...

  9. PHP使用数组依次替换字符串中匹配项

    select * from table where ctime >= '[date-14]' and ctime <= '[date-1]'; 想把上面这句sql的中括号表示的日期依次换成 ...

随机推荐

  1. Git和SourceTree配合使用

    Git介绍 git是当今最强大的本地的分布式代码版本管理工具. git的核心概念与操作:开发环境,本地仓库,远程仓库.他们的关系如下图: 与CVS及SVN的比较: CVS及SVN都是集中式的版本控制系 ...

  2. ASP.NET MVC IActionFilter IResultFilter IExceptionFilter/HandleError

    一.IActionFilter 1.基本定义 在action的执行前后进行AOP拦截. IActionFilter接口定义如下: public interface IActionFilter { // ...

  3. 背水一战 Windows 10 (46) - 控件(ScrollViewer 基础): ScrollViewer, ScrollBar, ScrollContentPresenter

    [源码下载] 背水一战 Windows 10 (46) - 控件(ScrollViewer 基础): ScrollViewer, ScrollBar, ScrollContentPresenter 作 ...

  4. 基于tkinter的九型人格测试系统介绍

    基于tkinter的九型人格测试系统介绍 一.程序代码地址,GitHub 二.程序介绍 1.login.py 登录界面: 注册界面: 2.mainWindow.py 登录成功之后的界面: 3.doTe ...

  5. Java虚拟机7:垃圾收集(GC)-2(并行和并发的区别)

    1.并发编程下 这两个名词都是并发编程中的概念,在并发编程的模型下的定义: 并发:是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序. 并行:是多个或同 ...

  6. 跟着刚哥学习Spring框架--事务配置(七)

    事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ...

  7. Freemarker实例教程

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任.作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/a ...

  8. ICMP与ping:投石问路的侦察兵

    1. ICMP 协议 ICMP全称Internet Control Message Protocol,就是互联网控制报文协议.ping命令就是基于它工作的. ICMP 报文是封装在 IP 包 里面的. ...

  9. (转)CentOS7安装Nginx1.14.2

    原文:https://blog.csdn.net/zhyfyz/article/details/84957381 https://blog.csdn.net/q85795362/article/det ...

  10. Git for Windows之推送本地版本库到远程仓库

    Git for Windows之基础环境搭建与基础操作中介绍了Git基本环境的构建与基本的操作.生成了一个本地git版本库,本文将介绍如何将这个版本库推送到远程仓库(码云,github也可以). 1. ...