Declined
Last Updated: 05 Jun 2019 12:28 by ADMIN
To reproduce:
- Add bindingnavigator and data entry bound to a single binding source.
- Change one of the default editors to drop down list which is also bound to a datasource.
- Synchronize the selected value in the binding source CurrentChanged event.
- Press the move to the last item button.
- You will notice that the value is not displayed properly (displayed is the value member not the display member)

Workaround: 
void radBindingNavigator1MoveLastItem_Click(object sender, EventArgs e)
{
    bs.MovePrevious();
    bs.MoveNext();
}
Completed
Last Updated: 21 Jun 2018 14:06 by ADMIN
ADMIN
Created by: Dimitar
Comments: 0
Category:
Type: Bug Report
0
Use attached to reproduce.
Approved
Last Updated: 12 Feb 2018 12:09 by ADMIN
Use attached project to reproduce.

Workaround:
foreach (RadPanel item in radDataEntry1.Controls[0].Controls)
{
    var textBox = item.Controls[0] as RadTextBox;
    if (textBox != null)
    {
        textBox.TextBoxElement.MaxSize = new Size(0, 20);
    }
}

or
this.radDataEntry1.ItemDefaultSize = new Size(200, 24);
Completed
Last Updated: 01 Dec 2017 06:16 by ADMIN
To reproduce:

1. Drop RadDaraEntry and RadDataLayout controls from the toolbox on to the windows form.
2. Click on any of the control. 
3. Observe that the move symbol is not visible for the controls.
We need to select the control from Properties tab list box to move the control on the forms.

Note: other RadControls that also contain an internal container should allow dragging the control at design time as well.
Completed
Last Updated: 16 Oct 2017 10:28 by ADMIN
To reproduce:
- Just open the ThemeViewer and type some text in the RadDataEntry.

Workaround:
foreach (RadPanel item in radDataEntry1.Controls[0].Controls)
{
    var textBox = item.Controls[0] as RadTextBox;
    if (textBox != null)
    {
        textBox.TextBoxElement.TextBoxItem.HostedControl.MinimumSize = new Size(0, 24);
    }
}
Completed
Last Updated: 10 Mar 2017 08:39 by Vuqar
To reproduce:
- Bind the control to a list of the following objects:
 public class MyObj
{
    public MyEnum TestEnum { get; set; }

    public MyObj(MyEnum testEnum)
    {
        this.TestEnum = testEnum;
    }
}

public enum MyEnum : int
{
    Value1,
    Value2,
    Value3,
    Value4
}

- Change the value and move to the next entry.
- You will notice that the value of the previous entry is not changed.

Workaround:
void radDataEntry1_BindingCreating(object sender, Telerik.WinControls.UI.BindingCreatingEventArgs e)
{
    if (e.Control is RadDropDownList)
    {
        e.PropertyName = "SelectedValue";
    }
}
Completed
Last Updated: 11 Nov 2016 09:19 by ADMIN
To reproduce: use the following code:

public Form1()
{
    InitializeComponent();
   
    this.radDataEntry1.DataSource = new Employee()
    {
        FirstName = "Sarah",
        LastName = "Blake",
        Salary = null,
    };
}

private class Employee
{
    public string FirstName { get; set; }

    public string LastName { get; set; }

    public Nullable<int> Salary { get; set; }
}

private void radDataEntry1_EditorInitializing(object sender, EditorInitializingEventArgs e)
{
    if (e.Property.Name == "Salary")
    {
        RadMaskedEditBox radMaskedEditBox = new RadMaskedEditBox();
        radMaskedEditBox.MaskType = MaskType.Numeric;
        radMaskedEditBox.Mask = "c";
        radMaskedEditBox.NullText = "$0.00";
        radMaskedEditBox.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;
        radMaskedEditBox.MaskedEditBoxElement.StretchVertically = true;
        e.Editor = radMaskedEditBox;
    }
}

private void radDataEntry1_BindingCreated(object sender, BindingCreatedEventArgs e)
{
    if (e.DataMember == "Salary")
    {
        e.Binding.Parse += new ConvertEventHandler(Binding_Parse);
    }
}

void Binding_Parse(object sender, ConvertEventArgs e)
{
    Nullable<int> salary = int.Parse(e.Value.ToString(), NumberStyles.Currency);
    e.Value = salary;
}

1. Focus the RadMaskedEditBox.
2. Enter some value and press Tab key.
3. The value will be reset to its initial state.

Workaround:

public class CustomRadDataEntry : RadDataEntry
{
    public override string ThemeClassName  
    { 
        get 
        { 
            return typeof(RadDataEntry).FullName;  
        }
    }

    protected override RadScrollablePanelElement CreatePanelElement()
    {
        return new CustomRadDataEntryElement();
    }
}

public class CustomRadDataEntryElement:RadDataEntryElement
{
    protected override Type ThemeEffectiveType     
    { 
        get    
        { 
            return typeof(RadDataEntryElement);     
        }
    }

    protected override Binding CreateBinding(Control control, string propertyName, string dataMember)
    {
        Binding binding = null;
        object bindObject = null;

        if (this.Manager is CurrencyManager)
        {
            bindObject = (this.Manager as CurrencyManager).List;
        }
        else
        {
            bindObject = this.Manager.Current;
        }
        BindingCreatingEventArgs args = new BindingCreatingEventArgs(control, propertyName, bindObject, dataMember);
        OnBindingCreating(this, args);

        if (args.Cancel)
        {
            return binding;
        }

        binding = new Binding(args.PropertyName, bindObject, args.DataMember, true, DataSourceUpdateMode.OnPropertyChanged);

        OnBindingCreated(this, new BindingCreatedEventArgs(control, args.PropertyName, bindObject, args.DataMember, binding));

        return binding;
    }
}

Resolution: 
You need to subscribe to the BindingCreating event and set the FormattingEnabled property to true. Here is the code snippet: 
void radDataEntry1_BindingCreating(object sender, BindingCreatingEventArgs e)
{
    if (e.DataMember == "Salary")
    {
        e.FormattingEnabled = true;
    }
} 
Completed
Last Updated: 20 Oct 2016 10:44 by ADMIN
Please refer to the attached gif file.

Workaround: handle the SelectedIndexChanged event and update the DataBoundItem programmatically:

Dim dt As New DataTable
Dim bs As New BindingSource
Sub New()

    InitializeComponent()
    AddHandler Me.RadDataEntry1.EditorInitializing, AddressOf EditorInitializing

    dt.Columns.Add("Id", GetType(Integer))
    dt.Columns.Add("Name", GetType(String))
    dt.Columns.Add("Type", GetType(DeliveryType))

    dt.Rows.Add(1, "Item1", DeliveryType.Type2)
    dt.Rows.Add(2, "Item2", DeliveryType.Type3)
    dt.Rows.Add(3, "Item3", DeliveryType.Type1)

    bs.DataSource = dt
    Me.RadDataEntry1.DataSource = bs
    Me.RadBindingNavigator1.BindingSource = bs
End Sub

Public Enum DeliveryType
    Type1 = 0
    Type2 = 1
    Type3 = 2
End Enum

Private Sub EditorInitializing(sender As Object, e As Telerik.WinControls.UI.EditorInitializingEventArgs)
    Dim ddl As RadDropDownList = TryCast(e.Editor, RadDropDownList)
    If ddl IsNot Nothing Then
        AddHandler ddl.SelectedIndexChanged, AddressOf SelectedIndexChanged
    End If
End Sub

Private Sub SelectedIndexChanged(sender As Object, e As Data.PositionChangedEventArgs)
    Dim dataRowView As DataRowView = TryCast(bs.Current, DataRowView)
    dataRowView.Row("Type") = e.Position
End Sub
Completed
Last Updated: 23 Aug 2016 11:34 by ADMIN
To reproduce: add a RadBindingNavigator and a RadDataEntry

Use the following code:

RadDropDownList ddl;
BindingSource bs;

public Form1()
{
    InitializeComponent();

    this.radDataEntry1.EditorInitializing += radDataEntry1_EditorInitializing;
    bs = new BindingSource();

    DataTable dt = new DataTable();
    dt.Columns.Add("ID", typeof(int));
    dt.Columns.Add("Description", typeof(string));
    dt.Columns.Add("Code1", typeof(string));
    dt.Columns.Add("Code2", typeof(string));
           
    dt.Rows.Add(1, "Description", "DE", "CD");
    dt.Rows.Add(2, "Description", "CD", "AB");
    dt.Rows.Add(3, "Description", "BC", "DE");
    bs.DataSource = dt;  
    this.radDataEntry1.DataSource = this.radBindingNavigator1.BindingSource = bs;
}

private void radDataEntry1_EditorInitializing(object sender, Telerik.WinControls.UI.EditorInitializingEventArgs e)
{
    if (e.Property.Name == "Code1" || e.Property.Name == "Code2")
    {
        ddl = new RadDropDownList();
        using (ProvinceCodesEntities dbContext = new ProvinceCodesEntities())
        {
            IEnumerable<ProvinceCode> codeList = dbContext.ProvinceCodes.ToList();

            ddl.DataSource = codeList;
            ddl.DisplayMember = "ProvinceCode1";
            ddl.ValueMember = "ProvinceCode1";
        }
        e.Editor = ddl;
    }
}

When you run the application, you will notice that only the first item in the collection has incorrect mapped values for the properties which use RadDropDownList as an editor. When navigating to the next items, the values are OK.

Workaround:

RadDropDownList ddl;
BindingSource bs;

public Form1()
{
    InitializeComponent();
    this.radDataEntry1.EditorInitializing += radDataEntry1_EditorInitializing;
    bs = new BindingSource();

    DataTable dt = new DataTable();
    dt.Columns.Add("ID", typeof(int));
    dt.Columns.Add("Description", typeof(string));
    dt.Columns.Add("Code1", typeof(string));
    dt.Columns.Add("Code2", typeof(string));
           
    dt.Rows.Add(1, "Description", "DE", "CD");
    dt.Rows.Add(2, "Description", "CD", "AB");
    dt.Rows.Add(3, "Description", "BC", "DE");
    bs.DataSource = dt;  
}

private void radDataEntry1_EditorInitializing(object sender, Telerik.WinControls.UI.EditorInitializingEventArgs e)
{
    if (e.Property.Name == "Code1" || e.Property.Name == "Code2")
    {
        ddl = new RadDropDownList();
        using (ProvinceCodesEntities dbContext = new ProvinceCodesEntities())
        {
            IEnumerable<ProvinceCode> codeList = dbContext.ProvinceCodes.ToList();
            
            ddl.DataSource = codeList;
            ddl.DisplayMember = "ProvinceCode1";
            ddl.ValueMember = "ProvinceCode1";
            ddl.Parent = this;
        }
        e.Editor = ddl;
    }
}

private void Form1_Load(object sender, EventArgs e)
{
    this.radDataEntry1.DataSource = this.radBindingNavigator1.BindingSource = bs;
}
Declined
Last Updated: 05 Aug 2016 09:27 by ADMIN
Duplicated: http://feedback.telerik.com/Project/154/Feedback/Details/138793-fix-raddataentry-incorrectly-mapped-value-for-the-first-item-when-using-raddro

How to reproduce:
 public partial class Form1 : Form
    {
        List<Product> productList;
        List<Supplier> suplierList;
        BindingSource productsBinding;

        public Form1()
        {
            InitializeComponent();

            radDataEntry1.EditorInitializing += radDataEntry1_EditorInitializing;
            radDataEntry1.BindingCreating += radDataEntry1_BindingCreating;
            radDataEntry1.BindingCreated += radDataEntry1_BindingCreated;

            productList = new List<Product>();
            suplierList = new List<Supplier>();

            //productList.Add(new Product(1, "Chai"));
            //productList.Add(new Product(2, "Chang"));
            //productList.Add(new Product(3, "Aniseed Syrup"));
            productList.Add(new Product(4, "Chef Anton's Gumbo Mix"));
            productList.Add(new Product(5, "Tofu"));
            productList.Add(new Product(null, "Sir Rodney's Marmalade"));
            productList.Add(new Product(6, "Boston Crab Meat"));
            productList.Add(new Product(5, "Chartreuse verte"));
            productList.Add(new Product(2, "Ravioli Angelo"));
            productList.Add(new Product(4, "Perth Pasties"));

            suplierList.Add(new Supplier(1, "Exotic Liquids"));
            suplierList.Add(new Supplier(2, "New Orleans Cajun Delights"));
            suplierList.Add(new Supplier(3, "Tokyo Traders"));
            suplierList.Add(new Supplier(4, "Norske Meierier"));
            suplierList.Add(new Supplier(5, "New England Seafood Cannery"));
            suplierList.Add(new Supplier(6, "Leka Trading"));


            productsBinding = new BindingSource();
            productsBinding.DataSource = productList;
            radBindingNavigator1.BindingSource = productsBinding;
            radDataEntry1.DataSource = productsBinding;
        }

        RadDropDownList radDropDownList1;
        void radDataEntry1_EditorInitializing(object sender, Telerik.WinControls.UI.EditorInitializingEventArgs e)
        {
            if (e.Property.Name == "SupplierID")
            {
                radDropDownList1 = new RadDropDownList();
                radDropDownList1.DataSource = suplierList;
                radDropDownList1.ValueMember = "SupplierID";
                radDropDownList1.DisplayMember = "CompanyName";

                e.Editor = radDropDownList1;
            }
        }

        void radDataEntry1_BindingCreating(object sender, Telerik.WinControls.UI.BindingCreatingEventArgs e)
        {
            if (e.DataMember == "SupplierID")
            {
                e.PropertyName = "SelectedValue";
            }
        }

        void radDataEntry1_BindingCreated(object sender, BindingCreatedEventArgs e)
        {
            if (e.DataMember == "SupplierID")
            {
                e.Binding.FormattingEnabled = true;
                e.Binding.Parse += new ConvertEventHandler(Binding_Parse);
            }
        }

        private void Binding_Parse(object sender, ConvertEventArgs e)
        {
            int tmpvalue;
            int? result = int.TryParse(e.Value.ToString(), out tmpvalue) ? tmpvalue : (int?)null;
            e.Value = result;
        }

        public class Product
        {
            private int? _supplierID;
            private string _productName;
            public Product(int? supplierID, string productName)
            {
                this._supplierID = supplierID;
                this._productName = productName;
            }

            public int? SupplierID
            {
                get
                {
                    return this._supplierID;
                }
                set
                {
                    this._supplierID = value;
                }
            }

            public string ProductName
            {
                get
                {
                    return this._productName;
                }
                set
                {
                    this._productName = value;
                }
            }

           
        }

        public partial class Supplier
        {
            private int? _supplierID;
            private string _companyName;
            public Supplier(int? supplierID, string companyName)
            {
                this._supplierID = supplierID;
                this._companyName = companyName;
            }
            public int? SupplierID
            {
                get
                {
                    return this._supplierID;
                }
                set
                {
                    this._supplierID = value;
                }
            }
            public string CompanyName
            {
                get
                {
                    return this._companyName;
                }
                set
                {
                    this._companyName = value;
                }
            }
        }
    }

Workaround: handle the Shown event of the form and manually sync the the selected item in the editor with a cached initial indexprotected override void OnShown(EventArgs e)
{
    base.OnShown(e);

    this.radDropDownList1.SelectedIndex = initialIndex - 1;
}

Approved
Last Updated: 29 Mar 2016 11:56 by ADMIN
To reproduce: the attached gif file illustrates the behavior.

public Form2()
{
    InitializeComponent();

    this.radGridView1.DataSource = this.customersBindingSource;
    this.radGridView1.CellClick += radGridView1_CellClick;
}

private void radGridView1_CellClick(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
{
    this.radDataLayout1.DataSource = e.Row.DataBoundItem;
    this.radDataEntry1.DataSource = e.Row.DataBoundItem;
}

private void Form2_Load(object sender, EventArgs e)
{
    // TODO: This line of code loads data into the 'nwindDataSet1.Customers' table. You can move, or remove it, as needed.
    this.customersTableAdapter.Fill(this.nwindDataSet1.Customers);
}

Approved
Last Updated: 29 Mar 2016 11:55 by ADMIN
To reproduce:
- Add RadBindingNavigator, RadDataEntry and RadGridView to a form.
- Bind them to the same BindingSource.
- Add a new row with the binding navigator.
- The data entry still dispalys the previous record. 


Workaround:

radBindingNavigator1.BindingNavigatorElement.AutoHandleAddNew = false;
radBindingNavigator1.BindingNavigatorElement.AddNewButton.Click += AddNewButton_Click;

void AddNewButton_Click(object sender, EventArgs e)
{
    employees.AddNew();
    source.ResetBindings(false);
}
Approved
Last Updated: 29 Mar 2016 11:54 by ADMIN
To reproduce:
class RadDataEntryCustomForm : RadDataEntry
{
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadDataEntry).FullName;
        }

    }
}

Workaround:
class RadDataEntryCustomForm : RadDataEntry
{
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadScrollablePanel).FullName;
        }

    }
}
Approved
Last Updated: 29 Mar 2016 11:54 by ADMIN
Created by: ADH
Comments: 1
Category:
Type: Bug Report
0
Steps to reproduce:

1. Run the enclosed project.
2. Click "Options".
3. Change the theme.

Inconsistent themes are:
 - Telerik Metro Touch - the text fields are not tall enough, and break every other theme's text height.
 - Aqua has an odd background shade for each row.
 - Visual Studio 2012 Dark has an odd background shade too.
 - Same with VS2012 Light.
 - Windows 8 has a subtle background shade difference as well.
Approved
Last Updated: 29 Mar 2016 11:49 by ADMIN
To reproduce: follow the steps introduced in http://www.telerik.com/help/winforms/dataentry-how-to-change-editor-to-drop-down-list.html. However, try to use the RadCheckedDropDownList  instead. Use the following code snippet:

private BindingList<Model> editorDS = new BindingList<Model>();
RadCheckedDropDownList checkedDDL;
BindingSource bs;

public Form1()
{
    InitializeComponent();

    this.radDataEntry1.ItemInitialized += radDataEntry1_ItemInitialized;

    radDataEntry1.EditorInitializing += radDataEntry1_EditorInitializing;
    radDataEntry1.BindingCreating += radDataEntry1_BindingCreating;
    radDataEntry1.BindingCreated += radDataEntry1_BindingCreated;

    for (int i = 0; i < 15; i++)
    {
        editorDS.Add(new Model(i,"Item " + i));
    }

    DataTable dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Title", typeof(string));
    dt.Columns.Add("Models", typeof(BindingList<Model>));

    BindingList<Model> models;
    for (int i = 0; i < 5; i++)
    {
        models = new BindingList<Model>();
        for (int j = 0; j < 2; j++)
        {
            models.Add(editorDS[i + j]);
        }
        
        dt.Rows.Add(i, "Item" + i, models);
    }

    bs = new BindingSource();
    bs.DataSource = dt;
    this.radBindingNavigator1.BindingSource = bs;
    this.radDataEntry1.DataSource = bs;
}

void radDataEntry1_EditorInitializing(object sender, Telerik.WinControls.UI.EditorInitializingEventArgs e)
{
    if (e.Property.Name == "Models")
    {
        checkedDDL = new RadCheckedDropDownList();
        checkedDDL.DisplayMember = "Name";
        checkedDDL.ValueMember = "Id";
        checkedDDL.DataSource = editorDS;
        checkedDDL.Parent = this;
        checkedDDL.BindingContext = new System.Windows.Forms.BindingContext();
        e.Editor = checkedDDL;
    }
}

void radDataEntry1_BindingCreating(object sender, Telerik.WinControls.UI.BindingCreatingEventArgs e)
{
    if (e.DataMember == "Models")
    {
        e.PropertyName = "Text";
    }
}

void radDataEntry1_BindingCreated(object sender, BindingCreatedEventArgs e)
{
    if (e.DataMember == "Models")
    {
        e.Binding.FormattingEnabled = !true;
        e.Binding.Parse += Binding_Parse;
        e.Binding.Format += Binding_Format;
    }
}

private void Binding_Format(object sender, ConvertEventArgs e)
{
    BindingList<Model> models = e.Value as BindingList<Model>;
    if (models != null)
    {
        checkedDDL.CheckedItems.Clear();
        StringBuilder sb = new StringBuilder();
        foreach (Model m in models)
        {
            sb.Append(m.Name + ";");
        }
        e.Value = sb.ToString();
    }
}

private void Binding_Parse(object sender, ConvertEventArgs e)
{
    BindingList<Model> m = checkedDDL.DataSource as BindingList<Model>;
    string[] tokens;
    if (e.Value != null && m != null)
    {
        BindingList<Model> newValue = new BindingList<Model>();
        tokens = e.Value.ToString().Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
        foreach (string token in tokens)
        {
            if (m.Any(item => item.Name == token))
            {
                Model foundModel = m.ToList().Find(item => item.Name == token);
                newValue.Add(new Model(foundModel.Id,foundModel.Name));
            }
        }

        e.Value = newValue;
    }
}

private void radDataEntry1_ItemInitialized(object sender, ItemInitializedEventArgs e)
{
    if (e.Panel.Controls[1].Text == "Models")
    {
        e.Panel.Size = new Size(350, 25);
    }
}

class Model : INotifyPropertyChanged
{
    private int id;
    private string name;

    public Model(int id, string name)
    {
        this.Id = id;
        this.Name = name;
    }

    public int Id
    {
        get
        {
            return this.id;
        }
        set
        {
            this.id = value;
            this.OnPropertyChanged("Id");
        }
    }

    public string Name
    {
        get
        {
            return this.name;
        }
        set
        {
            this.name = value;
            this.OnPropertyChanged("Name");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propName));
        }
    }
}

The provided gif file illustrates better the obtained behavior.

Workaround: subscribe to the RadCheckedDropDownList.Validated event and call the RadCheckedDropDownList.DataBindings[0].WriteValue method. Thus, the Parse event will be fired and you can convert the input data to the appropriate format.
Completed
Last Updated: 11 Sep 2015 08:19 by ADMIN
Completed
Last Updated: 11 Sep 2015 07:56 by ADMIN
To reproduce: 
1. Drag and drop RadDataEntry on the form
2. Select the PanelContainer element and open the smart tag 
3. Select 'Undock in parent container' 
4. Select the undocked scrollable panel and move it out of control. 
5. Save the form
6. You can not move the scrollable panel or dock it parent container. 
Completed
Last Updated: 05 Jun 2015 08:15 by Chris Vaughn
To reproduce:
- Add RadDataEntry to a form and show the GDI objects count in the Task Manager.
- Press and hold the tab key.

Workaround:
this.radDataEntry1.DataEntryElement.ErrorIcon = null;
Declined
Last Updated: 16 Feb 2015 12:07 by ADMIN
Hello,

If I place a control, for example a Button on the RadDataEntry control, it appearance changes every time, after I finish with a debug session.

- The image1.jpg shows the initial state. The designer is opened in Visual Studio.
- I click on Run (Debug) and I close the application.
- The Button appearance changes -> image2.jpg
- I click on Run (Debug) and I close the application.
- The Button appearance changes -> image3.jpg

The button is getting smaller at every turn.

Best Regards,
László


1 2