Выпадающий 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));

    }
}

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

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>
Другие вопросы по тегам