Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
150
UltraGrid "hides" column values for when using a ValueList
posted

 My project recently upgraded to Infragistics 7.3 from 7.1. Since that upgrade we found an issue where any columns that contain enumerated values or any other values that we provide a ValueList for are having a problem. First point is that we always have CellClickAction set to SelectRow: So initially we select a Row ( clicking on a cell beside the "enumerated" column" ) Then if we click on the next (below) cell (also beside the "enumerated" column) The previously selected row's column containing a value list item disappears. It isn't really disappearing it is just that the font isn't getting changed from white (the selected text color) back to black (the normal text color). As soon as you scroll the mouse into the cell or scroll the grid a "repaint" occurs and everything is put back to normal but by then a bunch of our values are 'hidden'. Below is the main piece of the code causing the problem. We don't want to revert to 7.1 but so far our only solution is to change the System color scheme such that the "Selected text" and "Normal text" are both visible on the "Selected background. Any ideas? Thanks in advance.

The below piece of code causes our issue (provided that ultraGrid1 is an UltraGrid setup in the designer). Run the following code and click on the "Value1" column up and down the grid and the "Status2" column values disappear. Click on the "Status2" values and the "Status1" values disappear.

    public partial class UltraForm : Form
    {
        public UltraForm()
        {
            InitializeComponent();

            List<TestObject> list = new List<TestObject>();
            list.Add( new TestObject(
                          TestObject.ObjectStatus.Active,
                          TestObject.ObjectStatus.Complete, 1M, 2M, 3M ) );
            list.Add( new TestObject(
                          TestObject.ObjectStatus.Running,
                          TestObject.ObjectStatus.Waiting, 6M, 7M, 8M ));
            list.Add( new TestObject(
                TestObject.ObjectStatus.Waiting,
                 TestObject.ObjectStatus.Complete, 10M, 21M, 32M ));

            ultraGrid1.DataSource = list;

            ultraGrid1.DisplayLayout.Override.CellClickAction =
                CellClickAction.RowSelect;

            foreach ( UltraGridCell cell in ultraGrid1.Rows[ 0 ].Cells )
            {
                if ( cell.Value.GetType() == typeof( TestObject.ObjectStatus ) )
                {
                    cell.Column.ValueList = TestObject.ValueList;
                }
            }
        }
    }

 

    public class TestObject
    {
        public TestObject( ObjectStatus s1, ObjectStatus s2,
            decimal v1, decimal v2, decimal v3 )
        {
            mStatus1 = s1;mStatus2 = s2;
            mValue1 = v1;mValue2 = v2;mValue3 = v3;
        }

        public ObjectStatus Status1
        {
            get
            {return mStatus1;}
        }

        public ObjectStatus Status2
        {
            get
            {return mStatus2;}
        }

        public decimal Value1
        {
            get
            {return mValue1;}
        }

        public decimal Value2
        {
            get
            {return mValue2;}
        }

        public decimal Value3
        {
            get
            {return mValue3;}
        }

        private ObjectStatus mStatus1;private ObjectStatus mStatus2;
        private decimal mValue1;private decimal mValue2;private decimal mValue3;

        public static ValueList ValueList
        {
            get
            {
                ValueList list = new ValueList( );

                list.ValueListItems.Add( new ValueListItem( ObjectStatus.Active, "A" ) );
                list.ValueListItems.Add( new ValueListItem( ObjectStatus.Complete, "C" ) );
                list.ValueListItems.Add( new ValueListItem( ObjectStatus.Running, "R" ) );
                list.ValueListItems.Add( new ValueListItem( ObjectStatus.Waiting, "W" ) );
               
                return list;
            }
        }

        public enum ObjectStatus
        {
            Waiting,
            Active,
            Running,
            Complete,
        }
    }