2017-10-19 76 views
0

我想用物業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; 
} 

但它讓我看到「對象明確」,我只需要值,例如肯尼斯曼努埃爾

tokenBox list

我在做什麼錯?或者我可以採取什麼其他方法?

回答

0

您正在爲tokenBoxSettings.Properties.TextFieldtokenBoxSettings.Properties.ValueField指定相同的email_empresarial字段名稱。

因爲你是你的TokenBox結合到詞典,請嘗試更改設置TextFieldValueField參考詞典鍵和值,像這樣:

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

此外,在您的GetMail()方法已宣佈var emails但在您正在向未聲明的correos變量添加項目的循環。你確定你沒有bug嗎?

另請注意,在由GetMails()返回的詞典中,您使用相同的值mail.ToString()來填充字典鍵和值。你確定你真的需要使用Dictionary來綁定你的TokenBox嗎?如果鍵和值相同,則可嘗試使用普通的List<string>