2013-12-18 6 views
0

Я пробовал каждую комбинацию кода из примеров, которые я видел, но не могу понять это. Все, что я хочу сделать, это вставить значение раскрывающегося списка, который пользователь выбирает в форме. Я хочу вставить его в refDepartmentID. Ниже приведен код того, как я заполняю ddl и фактическую вставку. Я не получаю сообщение об ошибке, но вместо этого он вставляет первый идентификатор в раскрывающийся список, который имеет атрибут «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

Мне пришлось обернуть привязку if (! Page.IsPostBack) {} вокруг ddl. Благодаря! – user1431633

Смежные вопросы