使用DevExpress TokenEdit设置令牌报错:无法转换EditValue中的‘a’部分
使用DevExpress TokenEdit控件从字符串设置令牌时出错
问题场景
我尝试用以下代码通过字符串给TokenEdit控件设置令牌:
string _MovieGenre = "a,b,c,d,e,f"; tokenEdit1.Properties.EditMode = TokenEditMode.Manual; tokenEdit1.Properties.PopupFilterMode = TokenEditPopupFilterMode.StartWith; string[] MovieGenrewords = _MovieGenre.Replace(", ",",").Split(','); tokenEdit1.Properties.Tokens.Clear(); tokenEdit1.EditValue = string.Join(",", MovieGenrewords);
但运行时出现错误:
'无法将EditValue 'a,b,c,d,e,f'中的'a'部分转换为令牌'
问题原因
在Manual编辑模式下,TokenEdit要求所有要设置的令牌必须先存在于Properties.Tokens集合中。你先清空了Tokens集合,然后直接给EditValue赋值,控件找不到对应的令牌定义,因此报错。
解决方法
在设置EditValue之前,需要把拆分出来的每个字符串先添加到Tokens集合里:
string _MovieGenre = "a,b,c,d,e,f"; tokenEdit1.Properties.EditMode = TokenEditMode.Manual; tokenEdit1.Properties.PopupFilterMode = TokenEditPopupFilterMode.StartWith; string[] MovieGenrewords = _MovieGenre.Replace(", ",",").Split(','); tokenEdit1.Properties.Tokens.Clear(); // 先将所有令牌添加到集合中 foreach (var genre in MovieGenrewords) { tokenEdit1.Properties.Tokens.Add(new TokenEditToken(genre, genre)); } // 再设置EditValue tokenEdit1.EditValue = string.Join(",", MovieGenrewords);
另外,如果不需要严格的Manual模式,也可以将EditMode改为TokenEditMode.Default,这种模式下控件会自动根据EditValue创建令牌,无需手动维护Tokens集合。
内容的提问来源于stack exchange,提问作者Reza Hosseini
相关产品推荐
相关产品推荐

