Раскрывающийся список Telerik RadComboBox - изменить выбор с помощью кода позади

Схожу с ума от этого. У меня есть раскрывающийся список Telerik RadComboBox, где я выбираю имя сотрудника. Рядом с ним у меня есть обычное текстовое поле, в котором пользователь может вместо этого ввести номер сотрудника (клиент запросил это). У меня есть весь код, написанный для этой работы, но мне не хватает волшебной строки кода, которая может изменить раскрывающийся список Telerik RadComboBox с помощью кода позади.

Я тщательно искал это и нашел решение, которое должно иметь возможность выбирать нового человека, работая над объектом раскрывающегося списка:

rdcEmployeename.Items.FindItemByValue(pID.ToString()).Selected = true;

Это буквально ничего не делает, ничего не происходит... и да, я передаю действительные значения для pID. Я так потерян и новичок в Telerik, может ли кто-нибудь помочь, как это сделать?

Заранее спасибо.

Вот весь класс за страницей:

    public partial class admTimeAllocationPage : BasePage
{
    public DataTable timeallocationdatatable;

    private static SqlConnection sqlCon = new SqlConnection(ConfigurationManager.AppSettings["connStr"].ToString());
    private void Page_Load(object sender, EventArgs e)
    {

        //string temp = Convert.ToString(Session["loginPersonID"]);       

        //   unlockCheckBox.ForeColor = Color.Red;
        //   unlockCheckBox.Text = "Unlock Checkbox";

        string strSkin = ConfigurationManager.AppSettings["Telerik.Skin"].ToString();
        if (!IsPostBack)
        {
            Pnladd.Visible = false;

            Persons GetEmployeeName = new Persons(sqlCon);

            DataTable dtpersonname = GetEmployeeName.GetAll_ID_And_NameEmployeesOnly();
            rdcEmployeename.DataSource = dtpersonname;
            rdcEmployeename.DataTextField = "PreferredName";
            rdcEmployeename.DataValueField = "ID";
            rdcEmployeename.DataBind();


            int PID = Convert.ToInt32(rdcEmployeename.SelectedValue);


            DataTable dtEmpnumber = GetEmployeeName.GetAllEmpNumber(PID);
            rdcEmpno.DataSource = dtEmpnumber;
            rdcEmpno.DataTextField = "employmentNumber";
            rdcEmpno.DataValueField = "id";
            rdcEmpno.DataBind();

            Employees Getdetail = new Employees(sqlCon);
            DataTable BindEmpDetails = Getdetail.GetDataFromEmployeeinfo(PID);
            Session["Idpass"] = PID;
            //RadGrid1.DataSource = BindEmpDetails;
            //RadGrid1.MasterTableView.DataSource = BindEmpDetails;

            DataTable Codebind = Getdetail.GetCode();
            Radcode.DataSource = Codebind;
            Radcode.DataTextField = "code";
            Radcode.DataBind();



            TimeAllocation GetTimeAllocationData = new TimeAllocation(sqlCon);
            DataTable BindTimeAllocationData = GetTimeAllocationData.GetCurrentDataFromTimeAllocationTable(PID);
            Session["Idpass"] = PID;
            RadGrid1.DataSource = BindTimeAllocationData;
            RadGrid1.MasterTableView.DataSource = BindTimeAllocationData;

            timeallocationdatatable = BindTimeAllocationData;


            EmployeeScheduledHours.Text = Convert.ToString(GetTimeAllocationData.GetEmployeeScheduledHours(PID));

            EmployeeAllocatedHours.Text = Convert.ToString(GetTimeAllocationData.GetEmployeeAllocatedHours(PID));

            UseTimeAllocation.Checked = getCheckBoxValue();

            UseTimeAllocation.Enabled = false;

            EmployeeNumber.Text = Convert.ToString(EmployeeNumberFromPersonID(PID));



        }
    }

    private int PersonIDFromEmployeeNumber(int employeeNumber)
    {
        using (SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["connStr"].ToString()))
        {
            SqlCommand cmdselect = new SqlCommand(
            " SELECT TOP 1 ID FROM Persons WHERE CONVERT(int,ADP_PersonID) = " + employeeNumber, connection);

            int pID;

            try
            {
                connection.Open();
                pID = Convert.ToInt32(cmdselect.ExecuteScalar());
            }
            catch (Exception err)
            {
                String strErr = err.Message;
                throw;
            }
            finally
            {
                connection.Close();
            }
            return pID;
        }
    }

    private int EmployeeNumberFromPersonID(int personID)
    {
        using (SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["connStr"].ToString()))
        {
            SqlCommand cmdselect = new SqlCommand(
            " SELECT TOP 1 CONVERT(int,ADP_PersonID) FROM Persons WHERE id = " + personID, connection);

            int employeeNumber;

            try
            {
                connection.Open();
                employeeNumber = Convert.ToInt32(cmdselect.ExecuteScalar());
            }
            catch (Exception err)
            {
                String strErr = err.Message;
                throw;
            }
            finally
            {
                connection.Close();
            }
            return employeeNumber;
        }
    }


    protected void btnEmployeeNumberLookup_Click(Object sender, EventArgs e)
    {


        int employeeNumber=0;
        try
        {
            employeeNumber = Convert.ToInt32(EmployeeNumber.Text);
        }
        catch (Exception err)
        {
            EmployeeNumber.Text = "Invalid Entry, Try Again";              
        }

        int pID = PersonIDFromEmployeeNumber(employeeNumber);

        unlockCheckBox.ForeColor = Color.Red;
        unlockCheckBox.Text = "Unlock Checkbox";


        if (pID != 0)
        {

            //I Want to change the selection HERE!!!!!!

            rdcEmployeename.ClearSelection(); 
            rdcEmployeename.SelectedValue = pID.ToString();


        }

        else
        {
            EmployeeNumber.Text = "Invalid Entry, Try Again"; 
        }



    }
    protected void rdcEmployeename_SelectedIndexChanged(object sender, EventArgs e)
    {
        unlockCheckBox.ForeColor = Color.Red;
        unlockCheckBox.Text = "Unlock Checkbox";

        int PersonID = Convert.ToInt32(rdcEmployeename.SelectedValue);

        Persons GetPersonName = new Persons(sqlCon);
        DataTable dtEmpnumber = GetPersonName.GetAllEmpNumber(PersonID);
        rdcEmpno.DataSource = dtEmpnumber;
        rdcEmpno.DataTextField = "employmentNumber";
        rdcEmpno.DataValueField = "id";
        rdcEmpno.DataBind();
        Session["Idpass"] = PersonID;
        Employees Getdetail = new Employees(sqlCon);
        DataTable BindEmpDetails = Getdetail.GetDataFromEmployeeinfo(PersonID);

        TimeAllocation GetTimeAllocationData = new TimeAllocation(sqlCon);
        DataTable BindTimeAllocationData = GetTimeAllocationData.GetCurrentDataFromTimeAllocationTable(PersonID);

        timeallocationdatatable = BindTimeAllocationData;
        RadGrid1.DataSource = BindTimeAllocationData;
        RadGrid1.DataBind();
        EmployeeScheduledHours.Text = Convert.ToString(GetTimeAllocationData.GetEmployeeScheduledHours(PersonID));
        EmployeeAllocatedHours.Text = Convert.ToString(GetTimeAllocationData.GetEmployeeAllocatedHours(PersonID));

        UseTimeAllocation.Checked = getCheckBoxValue();
        UseTimeAllocation.Enabled = false;

        EmployeeNumber.Text = Convert.ToString(EmployeeNumberFromPersonID(PersonID));

    }
}

Я новичок в stackoverflow, так что извините за форматирование. Я пытаюсь изменить выбранное значение для раскрывающегося списка с «btnEmployeeNumberLookup_Click».


person AVClark    schedule 16.05.2016    source источник
comment
В самом последнем ответе на следующий пост на форуме Telerik кто-то предлагает этот код: rdcEmployeename.ClearSelection(); rdcEmployeename.SelectedValue = pID.ToString();. Вы можете попробовать это, чтобы увидеть, работает ли это для вас. (Источник: telerik.com/forums/combobox-selectedvalue-not-working)   -  person ConnorsFan    schedule 17.05.2016
comment
Код, который вы разместили, выглядит так, как будто это C # codebehind. Если это так, то проблема, скорее всего, в том, в какое событие вы поместили этот код. Вам нужно опубликовать больше информации о вашей проводке событий и вашем программном коде или javascript, как есть.   -  person Adam Heeg    schedule 17.05.2016
comment
замена на rdcEmployeename.ClearSelection(); rdcEmployeename.SelectedValue = pID.ToString(); не работает   -  person AVClark    schedule 17.05.2016
comment
Ваш код, вероятно, в порядке. Вы должны подключить его правильно, я думаю.   -  person Adam Heeg    schedule 17.05.2016
comment
Адам Хиг - я обновил вопрос   -  person AVClark    schedule 17.05.2016
comment
Я должен упомянуть, что я в первую очередь парень SQL, я просто мучительно ползаю по этому материалу, который в основном представляет собой уже существующий код. Так что простой ответ будет правильным здесь, ха-ха.   -  person AVClark    schedule 17.05.2016
comment
Вне моей головы основы выглядят хорошо. Установили ли вы точку останова в методе btnEmployeeNumberLookup_Click и прошлись по нему, чтобы посмотреть, что происходит? Вы сказали «ничего не происходит». означает ли это, что вы не можете достичь точки останова (обратной отправки не происходит?). Есть ли ajax на странице и панелях обновлений? (сейчас ложусь спать. вернусь завтра)   -  person Adam Heeg    schedule 17.05.2016
comment
Адам, если я поставлю точку останова на rdcEmployeename.ClearSelection(); rdcEmployeename.SelectedValue = pID.ToString();, он попадает, просто ничего не меняет в веб-браузере клиента.   -  person AVClark    schedule 17.05.2016
comment
Все, я решил эту проблему после 6 часов возни. Оказалось довольно просто. Обновления поля со списком rad контролировались диспетчером и средством обновления ajax telerik rad, а не панелью обновлений. У меня нет опыта их использования, поэтому я выбросил менеджер rad ajax и выбрал простую панель обновлений...   -  person AVClark    schedule 17.05.2016


Ответы (1)


Попробуйте добавить RadComboBox в radAjaxManager:

<telerik:RadAjaxManager ID="RadAjaxManager" runat="server">
    <AjaxSettings>

    <telerik:AjaxSetting AjaxControlID="rdcEmployeenameEmployeeNumber">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="EmployeeNumber"></telerik:AjaxUpdatedControl>
                </UpdatedControls>
        </telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
person idants    schedule 17.05.2016