DeExpress MVC 17.1如何从数据库
问题描述:
我想用物业tokenBoxSettings.Properties.DataSource填充从数据库中TokenBox填充TokenBoxDeExpress MVC 17.1如何从数据库
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;
}
但它让我看到“对象明确”,我只需要值,例如肯尼斯或曼努埃尔
我在做什么错?或者我可以采取什么其他方法?
答
您正在为tokenBoxSettings.Properties.TextField
和tokenBoxSettings.Properties.ValueField
指定相同的email_empresarial
字段名称。
因为你是你的TokenBox结合到词典,请尝试更改设置TextField
和ValueField
参考词典键和值,像这样:
tokenBoxSettings.Properties.TextField = "Value";
tokenBoxSettings.Properties.ValueField = "Key";
此外,在您的GetMail()
方法已宣布var emails
但在您正在向未声明的correos
变量添加项目的循环。你确定你没有bug吗?
另请注意,在由GetMails()
返回的词典中,您使用相同的值mail.ToString()
来填充字典键和值。你确定你真的需要使用Dictionary来绑定你的TokenBox吗?如果键和值相同,则可尝试使用普通的List<string>
。