繁体   English   中英

如何获取所选项目的值并插入

[英]How to get the value of selected item and insert

我已经编写了这个简单的代码,以便通过Entity FrameworkWeb Form而不是在MVC插入记录。 我想从DropdownList选定项目中插入部门值 在此处输入图片说明

上面的数据是手动添加到数据库中的...如果我要从此处插入记录,则它正在创建新的数据插槽。 我希望将其添加到从下拉列表中选择的同一类别内。

public partial class WebForm1 : System.Web.UI.Page
{
    EmployeeDbContext db = new EmployeeDbContext();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DropDownList1.DataSource = db.Departments.ToList();
            DropDownList1.DataBind();
        }

        GridView1.DataSource = db.Departments.Include("Employees").ToList();
        GridView1.DataBind();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Employee emp = new Employee(){Name = TextBox1.Text,
            Gender= TextBox2.Text,
            Salary = float.Parse(TextBox3.Text),

            //this retuns '_Page' in ID.
            Department = 
            new Department() { ID = Convert.ToInt32(DropDownList1.SelectedValue)}
        }; 

        db.Employees.Add(emp);
           db.SaveChanges();
    }
}

public class Department
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Location { get; set; }
    public List<Employee> Employees { get; set; }
}

public class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Gender { get; set; }
    public float Salary { get; set; }
    public Department Department { get; set; }
}

public class EmployeeDbContext : DbContext
{
    public DbSet<Employee> Employees { get; set; }
    public DbSet<Department> Departments { get; set; }
}

在这种情况下,您可以选择的Departments已经存在,则应该使用并设置FK属性,而不要设置导航属性:

public class Employee
{
    //add this property
    [ForeignKey("Department")]
    public int  DepartmentId { get; set; }
    public Department Department { get; set; }
}

然后在您的代码中可以执行以下操作:

Employee emp = new Employee(){Name = TextBox1.Text,
                              Gender= TextBox2.Text,
                              Salary = float.Parse(TextBox3.Text),
                              DepartmentId=Convert.ToInt32(DropDownList1.SelectedValue)
                             }; 

 db.Employees.Add(emp);
 db.SaveChanges();

只需设置该属性,即可将当前部门与新员工联系起来。

更新资料

现在我看到您在获取部门ID时遇到问题,在这种情况下,您可以按照@Mike在他的答案中的建议进行操作,也可以在页面中执行此操作:

<asp:DropDownList ID="DepartmentsDropDownList" runat="server" DataTextField="Name" DataValueField="ID" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM