Syncfusion 复选框 ComboBoxAdv
XAML:
<syncfusion:GridTemplateColumn.EditTemplate>
<DataTemplate DataType="viewModel:CustomerViewModel" >
<syncfusion:ComboBoxAdv ItemsSource="{x:Static viewModel:RecordStatusModel.RecordStatusItem}" DropDownOpened="ComboBoxAdvStatus_DropDownOpened" DropDownClosed="ComboBoxAdvStatus_DropDownClosed"
AllowMultiSelect="True">
</syncfusion:ComboBoxAdv>
</DataTemplate>
</syncfusion:GridTemplateColumn.EditTemplate>
1。绑定数据源。一个静态的List<string>即可。
2.关键的两个事件:DropDownOpened和DropDownClosed。 即打开和关闭。在复选框打开的时候初始化,关闭的时候处理用户的选择。
/// <summary>
/// 报警级别复选框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ComboBoxAdvStatus_DropDownOpened(object sender, EventArgs e)
{
var cbatmp = (ComboBoxAdv)sender;
var alarmtypeselect = new ObservableCollection<object>();
var targetuser = CustomersDatagrid.SelectedItem as CustomerViewModel;
if (targetuser != null)
{
var liststr = RecordStatusModel.AlarmStatusToStrList(targetuser.RecordTypeFlags);
foreach (var str in liststr)
{
alarmtypeselect.Add(str);
}
cbatmp.SelectedItems = alarmtypeselect;
}
} /// <summary>
/// 报警类型复选框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ComboBoxAdvStatus_DropDownClosed(object sender, EventArgs e)
{
ComboBoxAdv cbatmp = (ComboBoxAdv)sender;
var tmp = cbatmp.SelectedItems.ToList<string>();
var targetuser = CustomersDatagrid.SelectedItem as CustomerViewModel;
var flag = RecordStatusModel.AlarmStrListToEnum(tmp);
if (targetuser != null) targetuser.RecordTypeFlags = flag;
alarmHandleViewModel.Save();
}
RecordStatusModel:
static class RecordStatusModel
{
private static List<string> _recordStatusItem;
private static Dictionary<AlarmStatusFlags, string> _alarmStatusDictionary; public static List<string> RecordStatusItem
{
get { return _recordStatusItem??(_recordStatusItem=new List<string>()
{
"报警",
"应答",
"恢复",
"移除",
}); }
} public static Dictionary<AlarmStatusFlags, string> AlarmStatusDictionary
{
get
{
return _alarmStatusDictionary ?? (_alarmStatusDictionary = new Dictionary<AlarmStatusFlags, string>()
{
{AlarmStatusFlags.Alarm, "报警"},
{AlarmStatusFlags.Acked, "应答"},
{AlarmStatusFlags.Recover, "恢复"},
{AlarmStatusFlags.Remove, "移除"},
});
}
} public static List<string> AlarmStatusToStrList(AlarmStatusFlags flags)
{
return (from dic in AlarmStatusDictionary where (int)(dic.Key & flags) > select dic.Value).ToList();
} public static AlarmStatusFlags AlarmStrListToEnum(IEnumerable<string> list)
{
return (from str in list from dic in AlarmStatusDictionary where dic.Value == str select dic)
.Aggregate<KeyValuePair<AlarmStatusFlags, string>, AlarmStatusFlags>(, (current, dic) => current | dic.Key);
}
}
Syncfusion 复选框 ComboBoxAdv的更多相关文章
- 对jquery操作复选框
摘要:jquery操作复选框.使用更简洁易懂,思路清晰,逻辑更明了,很实用 <!DOCTYPE html> <html> <head> <meta chars ...
- MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件
类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...
- jquery复选框 选中事件 及其判断是否被选中
jquery复选框 选中事件 及其判断是否被选中 (2014-07-25 14:03:54) 转载▼ 标签: jquery复选框选中事件 分类: extjs jquery 今天做了 显示和不显示密 ...
- 复选框css
input, select, button, textarea{ -webkit-appearance:none; }该属性会导致复选框失去选择效果
- 案例1.通过Jquery来处理复选框
实现以下功能: 1:选中第一个复选框,那么下面所有的复选框都选中,去除选中第一个复选框,下面的都不选中 2:当点击全选按钮,上面足球.篮球.游泳.唱歌 全部选中 3:当点击全不选按钮,上面四个全部取消 ...
- 【Telerik】实现列表单元格中添加复选框,进行状态(是、否)判断
前台界面: 需求:实现对每条细则是否必备进行判断,必备就勾选,否则不勾选. 首先:要保证列表GridView是可编辑的(IsReadOnly=false) 表格代码 其次:单元格的数据绑定要保证是双向 ...
- 如何在select下拉列表中添加复选框?
近来在给一个公司做考试系统的项目,遇到的问题不少,但其中的几个让我对表单的使用颇为感兴趣,前端程序员都知道,下拉列表有select标签,复选框有checkbox,但是两者合在一起却少有人去研究,当时接 ...
- jquery点击复选框触发事件给input赋值
体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/31.htm 代码如下: <!DOCTYPE html> <html xmlns=" ...
- js控制复选框checkbox 只能单选
我们在页面经常会用到单选框,来提供单值选在字段,但是有一个问题就是:一旦选择了就不能去除(即--只要选择了就不能再以空值提交了). 所以为了解决这个问题,用复选框限制单选是一个不错的选择 <sc ...
随机推荐
- Ubuntu下更改网卡名称
这个方法用于解决Ubuntu下更换网卡后,新网卡变更为eth1,并且源网卡的名称eth0,无法给新网卡用的情况.也可以用于为网卡更名.网 卡MAC地址改变之后,在Linux中找到网卡,新的网卡会被识别 ...
- cocoapods specs 镜像
在使用cocoapods 进行update 或者 install的时候 每次回去更新获取的pod specs,每次速度都不是很理想,博主最近对github上的specs仓库进行了镜像,分别在gitca ...
- cassandra的源代码的入口
参考 http://ju.outofmemory.cn/entry/115864 cassandra自带服务端,这和leveldb不一样. 入口就从服务端程序说起. 具体的入口程序在 Cassand ...
- Maemo平台上如何使用Openvpn
Maemo是一个开源的智能手机软件平台社区,它是基于Debia的LInux发行版本,Maemo的大多是开源的,并已经制定了Maemo和诺基亚内部的设备与许多开源项目,例如,Debian的Linux内核 ...
- 如何在SCENEKIT使用SWIFT RUNTIME动态加载COLLADA文件
问题:今天接到一个项目,负责弄需求的美眉跟我讲能不能做一个原型能够加载Collada文件,流程如下: 用户用app下载Collada 压缩包(如内购项目) 压缩包解压 展示Collada文件里的内容 ...
- awk 的一些用法
awk,我觉得是Linux里面处理文本最精妙的命令,它是一个行处理的命令,它最初级的用法是:给定一些简单的pattern,然后按照这个pattern 去搜索匹配的行.它的高级用法是用awk来编程,除了 ...
- tomcat详情
[转载]http://grass51.blog.51cto.com/4356355/1123400
- Java 第22章 mySQy
下列都是关系型数据库(在数据库中存在行.列) oracle: Oracle公司的产品(被sun公司收购) 中大型项目使用.银行系统.政府办公系统 9i/10g/11g sql server: 微软公司 ...
- makefile命令基本运用(一)
一.makefile介绍: 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译 ...
- [转载]Firebird与MySQL:一个使用者的体会
老板要我开发一个LINUX平台上的数据库项目,要求一定要用开源免费数据库.我知道这个数据库必须能够上网操作,同时作为公司的核心骨干数据库,除了必须是稳定的存储数据库外还必须有很强的数据和数据库控管功能 ...