В моей программе мне нужно добавить функцию добавления для вставки категорий.Я использую treeView для отображения данных.
Как я могу моделировать этот класс в базе данных?
Пользовательвставьте уровень, и программа должна вставить эту категорию на этом уровне.Но я устаю.Потому что нужно проверить, существуют ли другие уровни (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;
}