2013-12-18 127 views
0

我已经尝试了我见过的例子中的所有代码组合,但无法弄清楚这一点。我想要做的就是插入用户在表单上选择的下拉列表的值。我想将它插入refDepartmentID。以下是我如何填充ddl和实际插入的代码。我没有收到错误,而是将第一个ID插入到具有“selected”属性的下拉列表中。它总是“1”,不会插入我选择的那个。 谢谢!选择插入下拉列表值

// populates Departments dropdownlist 
using (dbOrganizationEntities1 myEntities = new dbOrganizationEntities1()) 
{  
    var allDepartments = from tbDepartments in myEntities.tbDepartments 
         select tbDepartments; 
    ddlDepartments.DataSource = allDepartments; 
    ddlDepartments.DataValueField = "DepartmentID"; 
    ddlDepartments.DataTextField = "DepartmentName"; 
    ddlDepartments.DataBind(); 
} 

protected void btnRequest_Click(object sender, EventArgs e) 
{ 
    insertNewProject(); 
} 

private void insertNewProject() 
{ 
    using (dbPSREntities1 context = new dbPSREntities1()) 
    { 
     //Create a new instance of the Customer object 
     tbProject proj = new tbProject { //Add new values to each fields 
     ProjectContactInfo = txtContactPhone.Text, //trying to insert this 
     refDepartmentID = Convert.ToInt32(ddlDepartments.SelectedValue) }; 
     context.tbProjects.AddObject(proj); 
     context.SaveChanges(); 
    } 
} 
+0

“文本”有一个红色下划线,并说我可能会丢失的组件? – user1431633

+0

哦,废话。我的意思是'ddlDepartments.SelectedItem.Value';而不是'.Text'。这是当您复制/粘贴并获得侧面跟踪时发生的情况。我将删除评论。 – Brian

回答

1

您尚未发布Page_Load方法,但我认为您忘记检查它是否回发。 的Page_Load应该是这样的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     // populates Departments dropdownlist 
     using (dbOrganizationEntities1 myEntities = new dbOrganizationEntities1()) 
     {  
      var allDepartments = from tbDepartments in myEntities.tbDepartments 
        select tbDepartments; 
      ddlDepartments.DataSource = allDepartments; 
      ddlDepartments.DataValueField = "DepartmentID"; 
      ddlDepartments.DataTextField = "DepartmentName"; 
      ddlDepartments.DataBind(); 
     } 
    } 
} 
0

你很近。获取您需要的ID ddlDepartment.SelectedItem.Value

1

您是否可以在您致电insertNewProject之前检查是否意外地重新绑定了清单?否则,无论您选择的任何值都会丢失,它将始终返回列表中的第一项作为SelectedValue

+0

我不得不围绕ddl绑定包装if(!Page.IsPostBack){}。谢谢! – user1431633