如何将下拉控件绑定到ASP.NET中的数据源

问题描述:

我是C#的新手。如何将下拉控件绑定到ASP.NET中的数据源

我有一个创建HR系统的项目,我创建了一个页面来添加员工,但是主管要求我创建一个下拉列表,在添加新员工时显示部门。

我不知道如何开始,我应该先做些什么。我已经从工具中添加了一个下拉列表,但我不知道如何选择数据源及其名称和值。我应该选择部门表还是员工表?

public partial class _Default : Page 
{ 

    private String strcon = ConfigurationManager.ConnectionStrings["hr"].ConnectionString; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 

      bindgrideview(); 
    } 
    protected void bindgrideview() 
    { 
     SqlConnection strcon1 = new SqlConnection(strcon); 
     strcon1.Open(); 
     string ADDStr = "SELECT F_name , L_name , salary FROM Employee "; 
     SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1); 
     DataTable table = new DataTable(); 


     SqlDataAdapter adapter = new SqlDataAdapter(ADDCmd); 

     adapter.Fill(table); 
     GridView1.DataSource = table; 
     GridView1.DataBind(); 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     string F_name = TextBox1.Text; 
     string L_name = TextBox2.Text; 
     int status = 1; 
     string salarystr = TextBox3.Text.ToString(); 
     int salary = Int32.Parse(salarystr); 
     SqlConnection strcon1 = new SqlConnection(strcon); 
     strcon1.Open(); 
     string ADDStr = "ADDEMP"; 
     SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1); 
     ADDCmd.CommandType = CommandType.StoredProcedure; 
     ADDCmd.Parameters.AddWithValue("@F_name", F_name); 
     ADDCmd.Parameters.AddWithValue("@L_name", L_name); 
     ADDCmd.Parameters.AddWithValue("@status", status); 
     ADDCmd.Parameters.AddWithValue("@salary", salary); 

     ADDCmd.ExecuteNonQuery(); 
     bindgrideview(); 
     TextBox1.Text = ""; 
     TextBox2.Text = ""; 
    } 

这是我的页面的屏幕截图: http://store2.up-00.com/Nov12/YXb11858.png

这是最后的代码没有错误,但在下拉列表中没有的项目:(

public partial class _Default : Page 
{ 

    private String strcon = ConfigurationManager.ConnectionStrings["hr"].ConnectionString; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 

      bindgrideview(); 
    } 
    protected void bindgrideview() 
    { 
     SqlConnection strcon1 = new SqlConnection(strcon); 
     strcon1.Open(); 
     string ADDStr = "SELECT F_name , L_name , salary FROM Employee "; 
     SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1); 
     DataTable table = new DataTable(); 


     SqlDataAdapter adapter = new SqlDataAdapter(ADDCmd); 

     adapter.Fill(table); 
     GridView1.DataSource = table; 
     GridView1.DataBind(); 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     string F_name = TextBox1.Text; 
     string L_name = TextBox2.Text; 
     int status = 1; 
     string salarystr = TextBox3.Text.ToString(); 
     int salary = Int32.Parse(salarystr); 
     SqlConnection strcon1 = new SqlConnection(strcon); 
     strcon1.Open(); 
     string ADDStr = "ADDEMP"; 
     SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1); 
     ADDCmd.CommandType = CommandType.StoredProcedure; 
     ADDCmd.Parameters.AddWithValue("@F_name", F_name); 
     ADDCmd.Parameters.AddWithValue("@L_name", L_name); 
     ADDCmd.Parameters.AddWithValue("@status", status); 
     ADDCmd.Parameters.AddWithValue("@salary", salary); 

     ADDCmd.ExecuteNonQuery(); 
     bindgrideview(); 
     TextBox1.Text = ""; 
     TextBox2.Text = ""; 
     TextBox3.Text = ""; 
    } 
    protected void bindDepartments() 
    { 
     SqlConnection strcon1 = new SqlConnection(strcon); 
     strcon1.Open(); 
     string ADDStr = "SELECT ID,department_name FROM Department "; 
     SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1); 
     DataTable table = new DataTable(); 


     SqlDataAdapter adapter = new SqlDataAdapter(ADDCmd); 

     adapter.Fill(table); 

     DropDownList1.DataSource = table; 
     DropDownList1.DataValueField = "ID"; 
     DropDownList1.DataTextField = "department_name"; 
     DropDownList1.DataBind(); 

    } 

} 

随着你代码适用于从数据库中检索Employees信息,您将从部门表中检索Departments信息。

protected void bindDepartments() 
{ 
    SqlConnection strcon1 = new SqlConnection(strcon); 
    strcon1.Open(); 
    string ADDStr = "SELECT DepartmentId,DepartmentName FROM Departments "; 
    SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1); 
    DataTable table = new DataTable(); 


    SqlDataAdapter adapter = new SqlDataAdapter(ADDCmd); 

    adapter.Fill(table); 

    ddlDepartments.DataSource = table; 
    ddlDepartments.DataValueField = "DepartmentId"; //The Value of the DropDownList, to get it you should call ddlDepartments.SelectedValue; 
    ddlDepartments.DataTextField = "DepartmentName"; //The Name shown of the DropDownList. 
    ddlDepartments.DataBind(); 

} 
+0

谢谢你soooo多我不能告诉你当我看到你的回答时我有多开心,但是当我添加像这样的下拉列表时,有事情http://store2.up-00.com/Nov12/JrJ12794 .png我选择部门表,但价值和名称会是什么? – nourah 2013-03-04 16:05:19

+0

@nourah - Value属性是将在下拉列表中显示的文本。 Name属性表示您可以用来将其插入到数据库中的值。最常见的方法是显示DepartmentName,将DepartmentId作为值,假设您的表包含两个字段。 – MuhammadHani 2013-03-04 16:08:49

+0

员工表中的部门ID,我如何使用它? :( – nourah 2013-03-04 16:09:16