[英]Cascading Dropdownlist not loaded on SelectedIndexChanged Event
I have two dropdownlists named ddFatherEmployeeNumber and ddEmployeeFatherName. 我有两个名为ddFatherEmployeeNumber和ddEmployeeFatherName的下拉列表。 Now on load event i am populating ddFatherEmployeeNumber from database.
现在在加载事件中,我正在从数据库中填充ddFatherEmployeeNumber。 Here is the code
这是代码
private DataTable LoadComboBoxFatherEmployeeNumber()
{
DataTable dtFatherENo = new DataTable();
using (SqlConnection con = new SqlConnection(Base.GetConnection))
{
using (SqlCommand cmd = new SqlCommand("SELECT Id, EmployeeNo FROM TableFatherMaster", con))
{
cmd.CommandType = CommandType.Text;
con.Open();
SqlDataReader r = cmd.ExecuteReader();
dtFatherENo.Load(r);
}
}
return dtFatherENo;
}
Load Event code is 加载事件代码为
if (!IsPostBack)
{
ddFatherEmployeeNumber.DataSource = LoadComboBoxFatherEmployeeNumber();
ddFatherEmployeeNumber.DataTextField = "EmployeeNo";
ddFatherEmployeeNumber.DataValueField = "Id";
ddFatherEmployeeNumber.DataBind();
ddFatherEmployeeNumber.Items.Insert(0, new ListItem("Select Father Employee No", "0"));
}
Here is the .aspx code for ddFatherEmployeeNumber 这是ddFatherEmployeeNumber的.aspx代码
<div class="col-8">
<asp:DropDownList ID="ddFatherEmployeeNumber" runat="server" class="form-control here" AutoPostBack="True" OnSelectedIndexChanged="ddFatherEmployeeNumber_SelectedIndexChanged"></asp:DropDownList>
</div>
Now i want to populate the ddEmployeeFatherName on the bases of ddFatherEmployeeNumber selected value. 现在,我想在ddFatherEmployeeNumber选定值的基础上填充ddEmployeeFatherName。 I mean when a user select employee number from ddFatherEmployeeNumber list then from database, Name of that employee loads and populate the ddEmployeeFatherName.
我的意思是,当用户从ddFatherEmployeeNumber列表中然后从数据库中选择员工编号时,该员工的姓名将加载并填充ddEmployeeFatherName。 For that purpose i already write a code on ddFatherEmployeeNumber_SelectedIndexChanged Event.
为此,我已经在ddFatherEmployeeNumber_SelectedIndexChanged事件上编写了代码。 Here is the Code.
这是代码。
protected void ddFatherEmployeeNumber_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddEmployeeFatherName.SelectedIndex == 0)
{
}
else
{
using (SqlConnection con = new SqlConnection(Base.GetConnection))
{
using (SqlCommand cmd = new SqlCommand("SELECT Id, Name FROM TableFatherMaster WHERE EmployeeNo=@EmployeeNo ", con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@EmployeeNo", ddFatherEmployeeNumber.SelectedValue);
con.Open();
SqlDataReader r = cmd.ExecuteReader();
ddEmployeeFatherName.DataSource = r;
ddEmployeeFatherName.DataBind();
}
}
}
}
Now the problem is, it doesn't loads data into ddEmployeeFatherName. 现在的问题是,它不会将数据加载到ddEmployeeFatherName中。 Here is the picture for clear understanding
这是清晰了解的图片
Try setting DataTextField
and DataValueField
properties for ddEmployeeFatherName
first, because you're not setting them before using DataBind()
: 尝试先为
ddEmployeeFatherName
设置DataTextField
和DataValueField
属性,因为在使用DataBind()
之前没有设置它们:
using (SqlConnection con = new SqlConnection(Base.GetConnection))
{
using (SqlCommand cmd = new SqlCommand("SELECT Id, Name FROM TableFatherMaster WHERE EmployeeNo=@EmployeeNo ", con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@EmployeeNo", ddFatherEmployeeNumber.SelectedValue);
con.Open();
SqlDataReader r = cmd.ExecuteReader();
ddEmployeeFatherName.DataSource = r;
// set text and value fields
ddEmployeeFatherName.DataTextField = "Name";
ddEmployeeFatherName.DataValueField = "Id";
ddEmployeeFatherName.DataBind();
}
}
If the dropdownlist option values are still empty, try loading SqlDataReader
contents into DataTable
and use it instead: 如果dropdownlist选项值仍然为空,请尝试将
SqlDataReader
内容加载到DataTable
并使用它:
using (SqlCommand cmd = new SqlCommand("SELECT Id, Name FROM TableFatherMaster WHERE EmployeeNo=@EmployeeNo ", con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@EmployeeNo", ddFatherEmployeeNumber.SelectedValue);
con.Open();
SqlDataReader r = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(r);
ddEmployeeFatherName.DataSource = dt;
ddEmployeeFatherName.DataTextField = "Name";
ddEmployeeFatherName.DataValueField = "Id";
ddEmployeeFatherName.DataBind();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.