DeExpress MVC 17.1如何从数据库中填充TokenBox

时间:2017-10-19 22:59:03

标签: devexpress devexpress-mvc

我想使用属性 tokenBoxSettings.Properties.DataSource

从数据库填充TokenBox

TokenBoxView.cshtml

 groupSettings.Items.Add(
                        formLayoutSettings.Items.Add(i =>
                        {
                            i.FieldName = "email";
                            i.Caption = "Email";
                            i.NestedExtensionType = FormLayoutNestedExtensionItemType.TokenBox;
                            TokenBoxSettings tokenBoxSettings = (TokenBoxSettings) i.NestedExtensionSettings;
                            tokenBoxSettings.Width = 350;
//data binding
        tokenBoxSettings.Properties.DataSource = mainController.GetMails();
                            tokenBoxSettings.Properties.TextField = "email_empresarial";
                            tokenBoxSettings.Properties.ValueField = "email_empresarial";
                            tokenBoxSettings.Properties.IncrementalFilteringMode = IncrementalFilteringMode.Contains;
                            tokenBoxSettings.Properties.ValueSeparator = ';';
                        })
                        );

TokenBoxController.cs

//mainController
//I created a dictionary based on the result of select
public Dictionary<string, string> GetMails()
        {
            var email = db.usuario.ToList().Select(e => new { e.email_empresarial });
            var emails = new Dictionary<string, string>();

            foreach (var mail in email)
            {
                correos.Add(mail.ToString(), mail.ToString());
            }
            return emails;
}

但是它显示了&#34;对象显式&#34;,我只需要值,例如 kenneth manuel

tokenBox list

我做错了什么?或者我可以用其他方法做什么?

1 个答案:

答案 0 :(得分:1)

您为email_empresarialtokenBoxSettings.Properties.TextField指定了相同的tokenBoxSettings.Properties.ValueField字段名称。

由于您将TokenBox绑定到词典,请尝试更改TextFieldValueField的设置以引用词典键和值,如下所示:

tokenBoxSettings.Properties.TextField = "Value";
tokenBoxSettings.Properties.ValueField = "Key";

此外,在GetMail()方法中,您已声明var emails,但在循环中,您正在向未声明的correos变量添加项目。你确定这里没有错误吗?

另一个注意事项,在GetMails()返回的词典中,您使用相同的值mail.ToString()填充字典键和值。你确定你真的需要使用Dictionary来绑定你的TokenBox吗?如果键和值相等,您可以尝试使用普通List<string>