LookUpEdit DisplayFormat FormatString

时间:2012-02-12 12:36:29

标签: c# .net winforms devexpress lookup

我遇到了DevExpress LookUpEdit DisplayFormat的简单问题。我想在lookUpEdit中获得结果,如:
文件类型( .doc)
文件类型(
.docx)

const string defaultExtensionsList = "doc;docx;xlsx;xls;pdf;txt";
//...
var column = new LookUpColumnInfo("Column", "Extensions")
{
    Visible = true,
    //FormatType = FormatType.Custom,
    //FormatString ="Document type (*.{0})",
    Alignment = HorzAlignment.Near
};
ExtensionsLookup.Properties.DisplayFormat.FormatType = FormatType.Custom;
ExtensionsLookup.Properties.DisplayFormat.FormatString = "Document type (*.{0})";
ExtensionsLookup.Properties.EditFormat.FormatType = FormatType.Custom;
ExtensionsLookup.Properties.EditFormat.FormatString = "Document type (*.{0})";
ExtensionsLookup.Properties.Columns.Add(column);

var bindingList = defaultExtensionsList.Split(';').ToList();
ExtensionsLookup.Properties.DataSource = bindingList;

2 个答案:

答案 0 :(得分:2)

您可以使用以下技巧(RepositoryItemLookUpEdit.GetNotInListValue事件):

const string defaultExtensionsList = "doc;docx;xlsx;xls;pdf;txt";
//...
var columnID = new LookUpColumnInfo("Column", "IDs") { Visible = false };
var columnToDisplay = new LookUpColumnInfo("Display", "Extensions");

lookUpEdit.Properties.Columns.AddRange(new LookUpColumnInfo[] { columnID, columnToDisplay });
lookUpEdit.Properties.ValueMember = "Column";
lookUpEdit.Properties.DisplayMember = "Display";
lookUpEdit.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
lookUpEdit.Properties.GetNotInListValue += OnGetNotInListValue;

var bindingList = defaultExtensionsList.Split(';').ToList();
lookUpEdit.Properties.DataSource = bindingList;
//...
void OnGetNotInListValue(object sender, GetNotInListValueEventArgs e) {
    if(e.FieldName == "Display")
        e.Value = string.Format("Document type (*.{0})",
            ((IList<string>)lookUpEdit.Properties.DataSource)[e.RecordIndex]);
}

答案 1 :(得分:0)

如果我没记错的话,LookUpEdit不支持此功能。

我只是构建一个名为“文档类型( .docx)”,“文档类型( .xy)”的List,并将其绑定到控件。

这样的东西
var types = defaultExtensionsList.Split(';').Select(s => "DocumentType (*." + s + ")").ToList();