This is a migrated thread and some comments may be shown as answers.

Radcombobox Value not updating on postback

3 Answers 698 Views
ComboBox
This is a migrated thread and some comments may be shown as answers.
Carlos Franken
Top achievements
Rank 1
Carlos Franken asked on 09 Jun 2011, 11:46 AM
I have experienced lots of problems with the RadCombobox control with trying to bind it while having Enableloadondemand set to true
I'm currently binding on my gridview OnDataBound event by creating a single item and inserting it at index 0.

Now when i need to change te selected Item the enableloadondemand fires correctly and loads items filtered on the text typed in the text area.

after selecting an item the OnSelectedIndexchanged event fires and the radcombobox text is updated to the text of the selected item.
however the Value never gets updated and I will have to perform another query to my recordset to select the value.

Since the text gets updated normally when selecting a different item how come the value doesn't ?
i have a snippet with how i handle the selectedindexchanged event.

protected void RCB1_Selectedindexchanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
    RadComboBox rcb = (RadComboBox)sender; // combobox that fires event
    string hi = rcb.SelectedValue; // combobox value, always old value
    string ha = rcb.Text; // combobox text, always text from newly selected item
    string hu = e.OldValue; // working correctly always value of previously selected item
    string ho = e.OldText; //working correctly always text of previously selected item
    string he = e.Value; // not working as one would expect it to work, always OLD value
    string hy = e.Text; // working as expected always NEW text
    string hiy = rcb.SelectedItem.Value; // Always old value
    string hyi = rcb.SelectedItem.Text; // always old value
    DataView dv = (DataView)SqlDataSource2.Select(new DataSourceSelectArguments());
    string huu; // correct value after looping through intire datasource, would like to avoid this 
    foreach (DataRowView row in dv)
    {
        if (row["Naambedrtot"].ToString() == rcb.Text)
        {
            huu = row["klantnummer"].ToString();
        }
    }
    if (e.OldValue != e.Value) // always the same so selected value never gets changed
    {
        rcb.SelectedValue = e.Value;
    }
}

Is this the correct behavior ?

I would think that if you can send the correct new text , the new value should be simple too.

3 Answers, 1 is accepted

Sort by
0
Kalina
Telerik team
answered on 13 Jun 2011, 05:20 PM
Hello Carlos Franken,

I am not sure that I fully understand the scenario that you are trying to implement.
As I can see at the code snippet pasted here - you are trying to access the RadComboBox SelectedItem at server-side.
However RadComboBox items are not accessible at server-side if they have been populated via Load On Demand - please find more details about this topic here.

Let me suggest you take a look at this Code Library article. In the sample project published there you can find a working example with RadComboBox(with Load On Demand enabled) and GridView.


Kind regards,
Kalina
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Carlos Franken
Top achievements
Rank 1
answered on 14 Jun 2011, 07:27 AM
Thanks for the response,  i'll try to further clarify my issue.

It is very simple, i know that when using Automatic-loadonDemand there is no itemcollection to acces in code.
When i change my selection clientside why is the text property updated to the newly selected item, but not the value.

In other words,

if i have 3 items (created by a datasource, not in markup) and load on demand enabled, the value stored in my database is 1.

item1.text = text1  -  item1.value  = 1
item2.text = text2  -  item2.value  = 2
item3.text = text3  -  item3.value  = 3

by getting the value from my database in a datasource, and getting the accosiated text for this value from a database table
i create a new radcombobox item with value = 1 and text = text1.
This is then inserted at index 0 of the combobox control.

this all works as expected, the problem starts when i select a different item.

When i press the textarea or the down arrow on the control and now select "text3"
this updates the text property of my radcombobox but not the value

so when i now acces the control in code, the text property is "text3".
However the SelectedValue property is still 1 , while i need it to be 3.

hope this clarifies my problem a bit and you are able to provide a clear answer to why this is the way it is.



0
Carlos Franken
Top achievements
Rank 1
answered on 14 Jun 2011, 10:12 AM
I have figuered it out,

By creating a RadComboBoxItem server-side and inserting it at index 0.
(A method used to get the control to work within EditItemTemplates when using Load-On-Demand)
the RadComboBox NEVER updates it's SelectedValue (reason unknown to me).

Workaround, Do not use the suggested Item creation and insertion at index 0,
instead just set the Controls Text and SelectedValue properties in code.

After this the SelectedValue was updated correctlly when choosing a different Item.
Tags
ComboBox
Asked by
Carlos Franken
Top achievements
Rank 1
Answers by
Kalina
Telerik team
Carlos Franken
Top achievements
Rank 1
Share this question
or