【发布时间】:2016-09-12 21:26:27
【问题描述】:
为此发疯。我有一个 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”更改。
【问题讨论】:
-
在 Telerik 论坛上以下帖子的最后一个答案中,有人建议使用此代码:
rdcEmployeename.ClearSelection(); rdcEmployeename.SelectedValue = pID.ToString();。你可以试试看它是否适合你。 (来源:telerik.com/forums/combobox-selectedvalue-not-working) -
您发布的代码看起来像是 c# 代码隐藏。如果是这种情况,那么问题很可能是您将该代码放入的事件。您需要发布有关事件连接和代码隐藏或 javascript 的更多信息。
-
替换为 rdcEmployeename.ClearSelection(); rdcEmployeename.SelectedValue = pID.ToString();没用
-
您的代码可能没问题。我猜你需要正确接线。
-
Adam Heeg -- 我已经更新了问题
标签: c# asp.net telerik radcombobox