none
Добавление элемента списка с полем типа подстановка программно RRS feed

  • Вопрос

  • Нужно сделать небольшую веб-часть в Visual Studio 2010, которая будет добавлять элемент списка "Подпроект".

    В списке всего 2 поля: Title - текстовое и Project - поле типа подстановки из списка с идентичным названием

    На форме разместила 2 элемента: TextBox для поля Title и DropDownList для поля Project.

    Надо заполнить DropDownList при загрузке страницы, выбрать значение и сохранить элемент в списке. Но сыпятся ошибки.

    protected void Page_Load(object sender, EventArgs e)
            {
                SPSite site = new SPSite(".../ITO");
    
                using (SPWeb web = site.OpenWeb())
                {
                    SPList list = web.Lists["Подпроект"];
    
                    for (int n = 0; n < list.ItemCount; n++)
    
    DropDownList1.Items.Add(list.Items[n].File.Properties["Project"].ToString()); 
    
                  }
                    DropDownList1.DataBind();
                    }

    Ошибка "Object reference not set to an instance of an object.", если подробно, то System.NullReferenceException was unhandled by user code

    Как по другому можно заполнить DropDownList ?

    Если таким способом заполнять данные из поля текстового типа, то все ок. Работает.

    При попытке сохранить элемент списка возникает ошибка "Для обновления элемента списка используются недопустимые данные. Возможно, поле, которое вы пытаетесь обновить, доступно только для чтения".

    Как выбранное значение из DropDownList сохранить в список Подпроекты в поле типа подстановка?


    • Изменено Volchitsa 14 ноября 2012 г. 4:49
    14 ноября 2012 г. 4:48

Ответы

  • foreach (SPListItem test in testList.Items)
    {
       Dropdown.Items.Add(new ListItem(test.Title, test.ID.ToString()));
    }
    Или не Title а какое-то поле
    foreach (SPListItem test in testList.Items)
    {
        Dropdown.Items.Add(new ListItem(test["FieldName"].ToString(), test.ID.ToString()));
    }

    //потом в коде записи элемента
    SPList list2 = web.GetList("/lists/list2");
    //Добавляем элемент
    SPListItem item = list2.Items.Add();
    //Заголовок
    item.Title = "Ваш заголовок";
    //Поле Project - поле подстановки. Передаем в него Value DropDownList'а
    item["Project"] = Dropdown.SelectedValue;
    //Обновляем элемент
    item.Update();

    14 ноября 2012 г. 7:22

Все ответы

  • foreach (SPListItem test in testList.Items)
    {
       Dropdown.Items.Add(new ListItem(test.Title, test.ID.ToString()));
    }
    Или не Title а какое-то поле
    foreach (SPListItem test in testList.Items)
    {
        Dropdown.Items.Add(new ListItem(test["FieldName"].ToString(), test.ID.ToString()));
    }

    //потом в коде записи элемента
    SPList list2 = web.GetList("/lists/list2");
    //Добавляем элемент
    SPListItem item = list2.Items.Add();
    //Заголовок
    item.Title = "Ваш заголовок";
    //Поле Project - поле подстановки. Передаем в него Value DropDownList'а
    item["Project"] = Dropdown.SelectedValue;
    //Обновляем элемент
    item.Update();

    14 ноября 2012 г. 7:22
  • Спасибо огромное!!

    Как же научиться самой программировать простые вещи((((

    15 ноября 2012 г. 1:55