Как создать функцию добавления для базы данных записей? - PullRequest
0 голосов
/ 17 августа 2011

В моей программе мне нужно добавить функцию добавления для вставки категорий.Я использую treeView для отображения данных.

Как я могу моделировать этот класс в базе данных?

enter image description here

Пользовательвставьте уровень, и программа должна вставить эту категорию на этом уровне.Но я устаю.Потому что нужно проверить, существуют ли другие уровни (IE: TreeView пуст, и я хочу добавить 2.1, так что это ошибка).

Иногда вы можете добавить уже установленный уровень, и это должно бытьзапрещено.

Мне нужно немного помочь в моем коде.Он закончен, но я хочу улучшить его или исправить ошибки (если так).

Вот код:

    private void AddButton_Click(object sender, RoutedEventArgs e)
    {
        NorthwindDataContext cd = new NorthwindDataContext();

        int[] levels = LevelTextBox.Text.ToIntArray('.');
        string newName = NameTextBox.Text;

        int[] parentLevels = new int[levels.Length - 1];
        Array.Copy(levels, parentLevels, parentLevels.Length);
        Objective current = GetNode(levels);
        Objective parent = GetNode(parentLevels);

        if (current != null)
        {
            MessageBox.Show("Level already exists");
            return;
        }
        else if (parent == null && parentLevels.Length != 0)
        {
            MessageBox.Show("Parent level doesn't exist");
            return;
        }

        var newObjective = new Objective();
        newObjective.Name = newName;
        newObjective.Level = levels.Last();
        newObjective.Parent_ObjectiveID = parent == null ? null : (int?)parent.ObjectiveID;

        cd.Objective.InsertOnSubmit(newObjective);
        cd.SubmitChanges();

        MessageBox.Show("The new objective has added successfully");
        NameTextBox.Clear();
        LoadObjectives();
    }

    public Objective GetNode(params int[] indexes)
    {
        return GetNode(null, 0, indexes);
    }

    public Objective GetNode(int? parentid, int level, params int[] indexes)
    {
        NorthwindDataContext cd = new NorthwindDataContext();
        Objective item = null;

        if (indexes.Length == 0)
            return null;

        if (parentid == null)
        {
            item = (from p in cd.Objective
                    where p.Level == indexes[level] && p.Parent_ObjectiveID == null
                    select p).SingleOrDefault();

        }
        else
        {
            item = (from p in cd.Objective
                    where p.Level == indexes[level] && p.Parent_ObjectiveID == parentid
                    select p).SingleOrDefault();
        }

        if (item == null)
            return null;

        if (++level < indexes.Length)
            item = GetNode(item.ObjectiveID, level, indexes);

        return item;
    }

1 Ответ

1 голос
/ 17 августа 2011

Почему вы не позволяете пользователю выбрать родительский узел, к которому должна быть добавлена ​​новая категория?Вы можете позволить им просто щелкнуть родительский узел, а затем добавить новый узел к нему.Никаких проверокЯ знаю, что это не отвечает на ваш прямой вопрос, но ваш нынешний подход жесток для вас и ваших пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...