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的更多相关文章

  1. 对jquery操作复选框

    摘要:jquery操作复选框.使用更简洁易懂,思路清晰,逻辑更明了,很实用 <!DOCTYPE html> <html> <head> <meta chars ...

  2. MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件

    类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...

  3. jquery复选框 选中事件 及其判断是否被选中

    jquery复选框 选中事件 及其判断是否被选中 (2014-07-25 14:03:54) 转载▼ 标签: jquery复选框选中事件 分类: extjs jquery   今天做了 显示和不显示密 ...

  4. 复选框css

    input, select, button, textarea{ -webkit-appearance:none; }该属性会导致复选框失去选择效果

  5. 案例1.通过Jquery来处理复选框

    实现以下功能: 1:选中第一个复选框,那么下面所有的复选框都选中,去除选中第一个复选框,下面的都不选中 2:当点击全选按钮,上面足球.篮球.游泳.唱歌 全部选中 3:当点击全不选按钮,上面四个全部取消 ...

  6. 【Telerik】实现列表单元格中添加复选框,进行状态(是、否)判断

    前台界面: 需求:实现对每条细则是否必备进行判断,必备就勾选,否则不勾选. 首先:要保证列表GridView是可编辑的(IsReadOnly=false) 表格代码 其次:单元格的数据绑定要保证是双向 ...

  7. 如何在select下拉列表中添加复选框?

    近来在给一个公司做考试系统的项目,遇到的问题不少,但其中的几个让我对表单的使用颇为感兴趣,前端程序员都知道,下拉列表有select标签,复选框有checkbox,但是两者合在一起却少有人去研究,当时接 ...

  8. jquery点击复选框触发事件给input赋值

    体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/31.htm 代码如下: <!DOCTYPE html> <html xmlns=" ...

  9. js控制复选框checkbox 只能单选

    我们在页面经常会用到单选框,来提供单值选在字段,但是有一个问题就是:一旦选择了就不能去除(即--只要选择了就不能再以空值提交了). 所以为了解决这个问题,用复选框限制单选是一个不错的选择 <sc ...

随机推荐

  1. rdlc报表大小设置

    参考:http://stackoverflow.com/questions/427730/how-to-limit-rdlc-report-for-one-page-in-a-pdf 主要设置为:报表 ...

  2. ceph实践: 搭建环境

    作者:吴香伟 发表于 2014/09/26 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 本节主要参考官网的ADDING/REMOVING OSDS章节. 同步 ...

  3. 菜单的隐藏&显示

    //还是先上万一老师的原代码 //隐藏与显示菜单Self.Menu := nil; {隐藏菜单} Self.Menu := MainMenu1; {显示菜单} //初一看到代码,我有点抓不到感觉的意思 ...

  4. iOS NSDate与NSString相互转化

    1.时间格式的字符串转date NSString *birthdayStr=@"1986-03-28 00:00:00.000"; NSDateFormatter *dateFor ...

  5. Spring和mybatis整合后的mybais-config.xml配置

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC & ...

  6. 自己对Extjs的Xtemplate的忽略

    之前学习extjs Xtmeplate受一些书籍的误导,说Xtemplate不支持else ,今天仔细看了官网的示例,才恍然大悟,卧槽!不仅支持if-elseif-else结构 连switch都能够支 ...

  7. php中的抽象类(abstract class)和接口(interface)

    一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...

  8. shell下批量重命名svn文件的方法

    shell下批量重命名svn文件的方法 目标: 将svn目录下所有文件重命名 , 原文件前缀为 ucc_ , 批量改为 xmd_ 用tree看下当前svn目录 ucc_1.c ucc_1.h ucc_ ...

  9. grunt

    Grunt是node的自动化构建工具,可以执行像压缩, 编译, 单元测试, 代码检查以及打包发布的任务. 类似于C/C++程序通过makefile管理编译测试打包的过程,Java程序通过Maven,A ...

  10. IOS XIB Cell自适应高度实现

    1.代码实现Cell高度自适应的方法 通过代码来实现,需要计算每个控件的高度,之后获取一个cell的 总高度,比较常见的是通过lable的文本计算需要的高度. CGSize labelsize = [ ...