windowsforms-9498-controls-and-libraries-editors-and-simple-controls-examples-how-to-add-value-entered-by-user-to-lookupedits-data-source.md
This example demonstrates how to allow users to type in the text box and add new values to the lookup’s data source.
Standard to allow users to type in the text box.A message box is displayed before a new record is added to the data source. A new value is added to the data source after the user confirms the operation.
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
public Form1() {
InitializeComponent();
// Binds the lookup to data.
lookUpEdit1.Properties.DataSource = Task.GetSampleData();
// Sets the lookup's data fields.
lookUpEdit1.Properties.DisplayMember = "Caption";
lookUpEdit1.Properties.ValueMember = "ID";
// Sets the lookup's value.
lookUpEdit1.EditValue = 0;
// Enables adding new values.
lookUpEdit1.Properties.TextEditStyle = TextEditStyles.Standard;
lookUpEdit1.ProcessNewValue += new ProcessNewValueEventHandler(this.lookUpEdit1_ProcessNewValue);
}
private void lookUpEdit1_ProcessNewValue(object sender, ProcessNewValueEventArgs e) {
if((string)e.DisplayValue == String.Empty) return;
if(XtraMessageBox.Show("Do you want to add a new value?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
List<Task> dataSource = (sender as LookUpEdit).Properties.DataSource as List<Task>;
dataSource.Add(new Task(dataSource.Count) { Caption = (string)e.DisplayValue });
e.Handled = true;
}
}
public class Task {
int fID;
public Task(int id) {
fID = id;
CreateDate = DateTime.Today;
}
public int ID {
get {
return fID;
}
}
public string Caption { get; set; }
public DateTime CreateDate { get; set; }
public static List<Task> GetSampleData() {
return new List<Task>() {
new Task(0){Caption = "Research", CreateDate = new DateTime(2022, 10, 15)},
new Task(1){Caption = "UI Design", CreateDate = new DateTime(2022, 11, 5)},
new Task(2){Caption = "Environment Setup", CreateDate = new DateTime(2022, 11, 10)},
new Task(3){Caption = "Sprint 1", CreateDate = new DateTime(2022, 11, 11)},
new Task(4){Caption = "Sprint 2", CreateDate = new DateTime(2022, 12, 12)},
new Task(5){Caption = "Sprint 3", CreateDate = new DateTime(2023, 1, 10)},
new Task(6){Caption = "Testing", CreateDate = new DateTime(2022, 2, 10)}
};
}
}
Imports System
Imports System.Windows.Forms
Imports System.Collections.Generic
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Controls
Public Sub New()
InitializeComponent()
' Binds the lookup to data.
lookUpEdit1.Properties.DataSource = Task.GetSampleData()
' Sets the lookup's data fields.
lookUpEdit1.Properties.DisplayMember = "Caption"
lookUpEdit1.Properties.ValueMember = "ID"
' Sets the lookup's value.
lookUpEdit1.EditValue = 0
' Enables adding new values.
lookUpEdit1.Properties.TextEditStyle = TextEditStyles.Standard
AddHandler lookUpEdit1.ProcessNewValue, AddressOf lookUpEdit1_ProcessNewValue
End Sub
Private Sub lookUpEdit1_ProcessNewValue(ByVal sender As Object, ByVal e As ProcessNewValueEventArgs)
If CStr(e.DisplayValue) = String.Empty Then
Return
End If
If XtraMessageBox.Show("Do you want to add a new value?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
Dim dataSource As List(Of Task) = TryCast((TryCast(sender, LookUpEdit)).Properties.DataSource, List(Of Task))
dataSource.Add(New Task(dataSource.Count) With {.Caption = CStr(e.DisplayValue)})
e.Handled = True
End If
End Sub
Public Class Task
Private fID As Integer
Public Sub New(ByVal id As Integer)
fID = id
CreateDate = Date.Today
End Sub
Public ReadOnly Property ID() As Integer
Get
Return fID
End Get
End Property
Public Property Caption() As String
Public Property CreateDate() As Date
Public Shared Function GetSampleData() As List(Of Task)
Return New List(Of Task)() From {
New Task(0) With {.Caption = "Research", .CreateDate = New Date(2022, 10, 15)},
New Task(1) With {.Caption = "UI Design", .CreateDate = New Date(2022, 11, 5)},
New Task(2) With {.Caption = "Environment Setup", .CreateDate = New Date(2022, 11, 10)},
New Task(3) With {.Caption = "Sprint 1", .CreateDate = New Date(2022, 11, 11)},
New Task(4) With {.Caption = "Sprint 2", .CreateDate = New Date(2022, 12, 12)},
New Task(5) With {.Caption = "Sprint 3", .CreateDate = New Date(2023, 1, 10)},
New Task(6) With {.Caption = "Testing", .CreateDate = New Date(2022, 2, 10)}
}
End Function
End Class
See Also