Сохранить несколько выбранных элементов списка в базу данных - PullRequest
0 голосов
/ 31 октября 2018

У меня есть список, я хочу сохранить все выбранные элементы в разных строках в базе данных, пожалуйста, как мне это сделать, я попробовал

foreach (ListItem item in comboGroup.Items)
        {
            if (item.Selected)
            {
                grp.username = comboUserName3.SelectedValue.ToString();
                string selectedItem = item.Value.ToString();
                int val = int.Parse(selectedItem);
                grp.groupid = val;
                //grp.iscurrent = true;
                grp.dateadded = DateTime.Now;
            }
        }

        db.group_user.Add(grp);
        db.SaveChanges();

но сохраняется только последний выбранный элемент

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Это потому, что вы не делаете «добавление» до тех пор, пока не выйдете из цикла. Таким образом, он просто запускается один раз и использует значение grp, как это было в последний раз, когда выполнялся цикл. Вам нужно сделать одно «Добавить» для каждого элемента (потому что каждое «добавление» создает одну строку), поэтому, по сути, «добавить» должно быть внутри цикла, и вы также должны каждый раз объявлять grp как свежий объект. (SaveChanges может остаться вне цикла, если вам интересно).

foreach (ListItem item in comboGroup.Items)
{
    if (item.Selected)
    {
        var grp = new group_user();
        grp.username = comboUserName3.SelectedValue.ToString();
        string selectedItem = item.Value.ToString();
        int val = int.Parse(selectedItem);
        grp.groupid = val;
        //grp.iscurrent = true;
        grp.dateadded = DateTime.Now;
        db.group_user.Add(grp);
    }
}

db.SaveChanges();
0 голосов
/ 31 октября 2018

Строка db.group_user.Add (grp); кажется, за пределами цикла. Вы переопределяете значения при каждом цикле. Таким образом, в конце, когда он выходит из цикла, у него остается только последнее значение.

Изменить код на,

foreach (ListItem item in comboGroup.Items)
    {
        if (item.Selected)
        {
            grp.username = comboUserName3.SelectedValue.ToString();
            string selectedItem = item.Value.ToString();
            int val = int.Parse(selectedItem);
            grp.groupid = val;
            //grp.iscurrent = true;
            grp.dateadded = DateTime.Now;
            db.group_user.Add(grp);
            db.SaveChanges();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...