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的中括号表示的日期依次换成 ...
随机推荐
- Java学习--循环语句
1. break public class BreakDemo{ // 完成一个四则运算的功能 public static void main(String args[]){ for(int i=0; ...
- .net core 与ELK(5)安装logstash
1.下载https://www.elastic.co/downloads/logstash到/usr/local/src wget https://download.elastic.co/logsta ...
- OCP考试062题库出现大量新题-18
choose two Examine this command executed on a client that is remote from the database server. SQL> ...
- C语言Socket-单工通信(客户端向服务器发送数据)
服务端(server) #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.li ...
- 连接dubbox注册中心的端口默认是20880
pyg服务工程 都没用到20880 都没用默认,从20881 开始用,第二个服务工程 的则为20882 <dubbo:protocol name="dubbo" port= ...
- maven项目无法新增java test目录的问题
有时候当我们构建好maven项目时,再导入eclipse中会缺少src/main/java 和src/test/java,这是需要我们手动创建: 但是有时候在 项目视图下或者 enterprise ...
- 设计模式《JAVA与模式》之访问者模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述访问者(Visitor)模式的: 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要 ...
- postgresql-shared_buffers调整
shared_buffers大小调整: http://www.rummandba.com/2011/02/sizing-sharedbuffer-of-postgresql.html SELECT ...
- linux shell使用别名,切换当前目录
别名alias 别名就是一种快捷方式,以省去用户输入一长串命令序列的麻烦. 别名使用alias命令 比如 alias cp='cp -i' alias l.='ls -d .* --color=tty ...
- npm包发布记录
下雪了,在家闲着,不如写一个npm 包发布.简单的 npm 包的发布网上有很多教程,我就不记录了.这里记录下,一个复杂的 npm 包发布,复杂指的构建环境复杂. 整个工程使用 rollup 来构建,其 ...