Silverlight 查询DataGrid 中匹配项 ,后台改变选中行颜色
需求:根据关键字(参会人号码或名称)查找参会人,在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 中匹配项 ,后台改变选中行颜色的更多相关文章
- WPF DataGrid ListView 等等 改变 选中行 颜色;以及 不变的原因
WPF中改变选中行的颜色是很简单的,就是用触发器:比如:以DataGrid为例: DataGrid.RowStyle Style TargetType= DataGridRow SetterPrope ...
- [ 记录 ] Vue 对象数组中一项数据改变,页面不更新
问题描述:将data中数据列表渲染到页面,循环生成 el-switch,点击页面中 el-switch 后数组中某项值改变,但是页面不更新 数据格式如下 export default{ data(){ ...
- 【WPF】通过修改dataGrid的cell的style,改变选中行失去焦点时的颜色
<Style TargetType="{x:Type DataGridCell}"> <Style.Triggers> <Trigger Proper ...
- listview改变选中行字体颜色
[android]listview改变选中行字体颜色 目标:选中item,其字体设置为#3197FF,未选中的,其字体为#FFFFFF 与listvew设置选中行item背景图片一样,使用select ...
- 解决IsEditable="True"的ComboBox在DataGrid中点击一次不能选中行的问题
原文:解决IsEditable="True"的ComboBox在DataGrid中点击一次不能选中行的问题 此方法很笨拙,并不推荐使用!!! 此方法很笨拙,并不推荐使用!!! 此方 ...
- 【android】listview改变选中行背景图片
[android]listview改变选中行背景图片 目标:当item选中时,改变其背景图片.效果图如下: 直接在listview的xml文件中使用listselector: 1 2 3 4 5 6 ...
- 在EasyUI中统一判断是否有选中行,如果有则将选中行数据传入回调函数
function procossWithSeletedData(func) { var rowData = $("#tbGrid").datagrid("getSelec ...
- DataGridView中获取与设置当前选中行以及SelectedRows和CurrentRow注意区分
场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...
- PHP使用数组依次替换字符串中匹配项
select * from table where ctime >= '[date-14]' and ctime <= '[date-1]'; 想把上面这句sql的中括号表示的日期依次换成 ...
随机推荐
- 转:log4j的使用简介
spring使用log4j,可以有2种方法. 1.在web.xml里不做任何配置. log4j.properties放在classpath根目录下, 这时候生成的日志文件就没有相对路径,如果写相对路径 ...
- day04_雷神_函数
#day04 1.函数 1.1函数传参 函数定义的时候是形参:函数执行的时候是实参 实参: 位置参数.关键字参数.混合参数 位置参数:位置一一对应 关键字参数: 可以位置不对应 混合参数:关键字参数要 ...
- 关于tableview下拉刷新崩溃的问题
逻辑应该是这样的:1. 下拉2. 达到下拉临界值以后再请求网络数据3. 待数据加载到本地以后才更新 data source4. reload tableview 如果先清空再下拉,后果就是往下拉的距离 ...
- 让你的照片更鲜艳------hsv拉伸
如果你的照片看上去灰蒙蒙的,缺少生机,那么hsv拉伸也许可以帮你的忙.hsv拉伸是一种可以提高图像鲜艳程度的图像增强方法,它能够让图像的颜色更加鲜活.艳丽,而且它的处理结果看上去很自然,比如源图中较暗 ...
- 工作随笔——获取当前Java程序PID
小知识,记录下: JVM:1.8 // spring boot 中可以使用 String pid = ManagementFactory.getRuntimeMXBean().getSystemPro ...
- IIS伪静态配置,使用URLRewriter实现伪静态
前段时间开发公司官网,用到了URLRewriter实现伪静态,在VS调试模式下没有任何问题,部署到IIS上后总是提示404的错误,查了很久才知道IIS需要做相应的配置才能实现动态跳转的功能,现将IIS ...
- intellij 引入本地库并war打包
一.引入本地库 1.File -> Project Structure -> Libraries,点击+,新增本地lib库. 2.File -> Project Structure ...
- Shell - 简明Shell入门13 - 用户输入(UserInput)
示例脚本及注释 1 - arguments #!/bin/bash if [ -n "$1" ];then # 验证参数是否传入 echo "The first para ...
- java中身份证号和的银行卡的深度校验
一: 身份证号: package com.mobile.utils; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...
- Nginx安装使用及与tomcat实现负载均衡
1. 背景 基于nginx强大的功能,实现一种负载均衡,或是不停机更新程序等.nginx相比大家基本上都知道是什么来头了,具体的文章大家可以去搜索相关文章学习阅读,或是可以查看Nginx中文文档和Ng ...