public void SetExpectedEditType(object sampleValue)
        {
            Type sampleValueType = GetEditType();

            if (sampleValueType == null)
            {
                // set to read only
                expectedValueType = null;
                DropDownEvent.PopulateDropdown(valueType, new string[] { "read only" }, this, null, 0, false);
            }
            else
            {
                if (sampleValueType != expectedValueType)
                {
                    // set to specific type
                    if (sampleValueType == typeof(object))
                    {
                        sampleValueType = sampleValue.GetType();
                        int defaultChoice = -1;
                        if (defaultChoice < 0 && CodeConvert.IsIntegral(sampleValueType))
                        {
                            defaultChoice = defaultValueTypes.FindIndex(kvp => kvp.Key == typeof(long));
                        }
                        if (defaultChoice < 0 && CodeConvert.IsNumeric(sampleValueType))
                        {
                            defaultChoice = defaultValueTypes.FindIndex(kvp => kvp.Key == typeof(double));
                        }
                        if (defaultChoice < 0)                          // && sampleValueType == typeof(string)) {
                        {
                            defaultChoice = defaultValueTypes.FindIndex(kvp => kvp.Key == typeof(string));
                        }
                        List <string> options = defaultValueTypes.ConvertAll(kvp => kvp.Value);
                        DropDownEvent.PopulateDropdown(valueType, options, this, SetEditType, defaultChoice, true);
                        cHeader.columnSetting.type = defaultValueTypes[defaultChoice].Key;
                    }
                    else
                    {
                        DropDownEvent.PopulateDropdown(valueType, new string[] { sampleValueType.ToString() }, this, null, 0, false);
                        cHeader.columnSetting.type = sampleValueType;
                    }
                    expectedValueType = sampleValueType;
                }
            }
        }