2013-11-15 67 views
0

我有一个网络表单,其中管理员将新增记录添加到数据库。该表单有1个下拉框drpDepartments和几个文本框EmployeeID, Fname, Lname等。我可以添加新记录,但从下拉框中选择的选项不会更改。它始终是第一个价值。这里是表tblEmployeetblDepartment无法从dropdownbox获得数据库数据库

enter image description here 这里是我的Page_Load()代码:

  sConn = new SqlConnection(sStr); 
      daEmp = new SqlDataAdapter("SELECT * FROM tblEmployee", sConn); 
      daDep = new SqlDataAdapter("SELECT * FROM tblDepartment", sConn); 
      dsEmp = new DataSet(); 
      dsDep = new DataSet(); 

      daEmp.Fill(dsEmp, "tblEmployee"); 
      daDep.Fill(dsDep, "tblDepartment"); 

      dsEmp.Tables["tblEmployee"].PrimaryKey = new DataColumn[] { dsEmp.Tables["tblEmployee"].Columns["EmployeeID"] }; 

      drpDepartments.DataSource = dsDep.Tables["tblDepartment"]; 
      drpDepartments.DataTextField = "Description"; 
      drpDepartments.DataValueField = "DeptID"; 
      drpDepartments.DataBind(); 

而且btnAdd_Click()代码:

 cb = new SqlCommandBuilder(daEmp); 

     DataRow dRow = dsEmp.Tables["tblEmployee"].NewRow(); 
     dRow["EmployeeID"] = txtID.Text; 
     dRow["Lname"] = txtLname.Text; 
     dRow["Fname"] = txtFname.Text; 
     dRow["Mname"] = txtMname.Text; 
     dRow["Address"] = txtAddress.Text; 
     dRow["Email"] = txtEmail.Text; 
     dRow["Phone"] = Convert.ToInt64(txtPhone.Text); 
     dRow["Jobtitle"] = txtJobtitle.Text; 
     dRow["Salary"] = txtSalary.Text; 
     dRow["DeptID"] = drpDepartments.SelectedValue; 

     dsEmp.Tables["tblEmployee"].Rows.Add(dRow); 
     daEmp.Update(dsEmp, "tblEmployee"); 
     dsEmp.Tables["tblEmployee"].AcceptChanges(); 

     Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "test", "<script>alert('New record added!');</script>"); 
     Refresh(); 

回答

3

下拉的结合必须是唯一在!IsPostBack

if(!IsPostBack) 
{ 
drpDepartments.DataSource = dsDep.Tables["tblDepartment"];// Set DataSource Table First 
     drpDepartments.DataTextField = "Department";// Set Column Name of DataTable to set as Text Field 
     drpDepartments.DataValueField = "DepartmentID";// Set Column Name of DataTable to set as Value Field 
     drpDepartments.DataBind(); 
} 

如果绑定DropD ownList在回发事件中,下拉将重新绑定在button_click(在page_load)事件中,并且用户设置的值将丢失。

+0

作品完美。谢谢! – user2971155

+1

@ user2971155 - 您表示Subin解决了您的问题。请好好选择他的答案,以便他获得信贷。毕竟这就是我们回答的人在这里:) –