Hi !
I have a value list wich i apply to a column.
this is my value list :
ValueList values = new ValueList();
_cmd = new OracleCommand("select id, name from users", _conn);
OracleDataReader odr = _cmd.ExecuteReader();
if (odr != null && odr.HasRows) {
while (odr.Read()) {
string id = odr[0].ToString();
string name = odr[1].ToString();
ValueListItem item = new ValueListItem(id, name);
values.ValueListItems.Add(item);
}
odr.Close();
So, this I apply to a column, and everything seems to be ok - it transforms the underneath ids to names, it saves any modification, etc.
My problem is when i try to insert something by typing in the value list. If i'm typing a name that does not exist in the loaded users, the characters are appearing very slow - there's something like a delay.
I type "asdfghjkl" and the characters are displayed in about 5 secs.
If i type a name that exists in the value list everything is ok. Also, it's ok if i type numbers, like "2334532654654".
Do you have any idea what's happening ?
Thank you!
Hello Mismar,
I believe that what's happening in your scenario is the following:
1. The DataType of the column having ValueList is a numeric like Integer or Double.2. Both of your ValueList properties - ID and Name are strings, so the slowlyness coming from the conversation time that the UltraGrid needs in order to perform the check whether the text that you are typing matches to one of items or not.
Assuming that you are having Int column, and your ValueList contains the following Id - name pairs:
"1" - "John""2' - "Peter""3" - "Sam"Now if you type only numbers like "2131321" the conversion would be really faster because this string contains only numeric chars and that's why the UltraGrid performs faster checks.
If you write something like "abcdefjh" in the cell, the conversion would be really slower, becuase it will have to check each string char if maching any of the other values, which I assume are integers, and thus the process is slower. In order to verify if my suggestion is correct, could you please change the data type of your column to be string, or even try it on another string column, and than perform the mentioned steps one more time.
If you need any other assistance with this behavior please feel free to let me know.
Hi Danko!
Thank you for your answer!
You've understood the problem corectly, but i can't change the datatype of the column since it's a bound column.
I have created the following case for you: CAS-82666-JS2KKL
There is also internal task that I have created for our Development team, regarding the mentioned behavior.
When we have more information for you we will update you through the case or here in the forum.
Please feel free to let us know if you have any other questions.
I am still following this forum thread.
Could you please let me know if is it possible for you to use the suggested approach above ?
If you have any other questions please do not hesitate to contact us.
I will contact our development team in order to verify if there is anything that we could in order to improve the performance in such situations.
Meanwhile I do have an approach for you that might work for your current scenario.
What you could do is to create an Unbound Column in the InitializeLayout event. Set it's DataType property to be String. Apply your ValueList to the unbound Column instead of to your real int column. Change the caption of the Unbound Column to be the same as your Int column through Header.Caption property. Hide your real Int column.
In the IntializeRow event, set the value of cells in the unbound column to be the same as the ones from the hidden Int column.
Please feel free to let me know if the above approach suits your requirements.