关于tree后台实现增删查改的思路

根据前台form传回来的数值进行判断,即类的id是否是空,要是空的话,就直接利用service的方法添加为根节点,要是id不是空就进行更新。要是父类的id不是空的话,就直接添加调用service的添加子节点的方法。


代码如下:

/**添加类别根节点./category/add_category.do*/
	@RequestMapping(value="/add_category",method=RequestMethod.POST)
	public void addCategory(HttpServletRequest request,PrintWriter writer) {
		
		String text = request.getParameter("text");
		String description = request.getParameter("description");
		String parent = request.getParameter("parent");
		String leaf = request.getParameter("leaf");
		
		if(parent.equals("root")){
			//添加根节点
			if(categoryService.addTopCategory(text, description)){
				writer.write("{success:true, msg:'根节点新增成功!'}");
			}else{
				writer.write("{success:true, msg:'根节点新增失败!'}");
			}
		}else{
			//添加子节点,把id=parent的节点变为非叶子,让新节点的parent=父节点的id
			Category category = new Category();
			category.setText(text);
			category.setDescription(description);
			
			if(parent.equals("root")){
				parent = "0";
			}
			
			if(categoryService.addChildCategory(Integer.parseInt(parent), category)){
				writer.write("{success:true, msg:'子节点新增成功!'}");
			}else{
				writer.write("{success:true, msg:'子节点新增失败!'}");
			}
		}
	}
	
	/**删除类别(根据id和pid)./category/delete_category.do*/
	@RequestMapping(value="/delete_category",method=RequestMethod.POST)
	public void deleteCategoryByIdAdnPid(HttpServletRequest request,PrintWriter writer) {
		
		String id = request.getParameter("id");
		String pid = request.getParameter("pid");
		if(pid.equals("root")){
			pid = "0";
		}
		try {
			if(categoryService.deleteById(Integer.parseInt(id), Integer.parseInt(pid))){
				writer.write("{success:true, msg:'类别删除成功!'}");
			}else{
				writer.write("{success:true, msg:'类别删除失败!'}");
			}
		}catch (QshException e) {
			// TODO Auto-generated catch block
			writer.write("{success:true, msg:'"+e+"'}");
		}
		return;
	}
	
	/*修改类别信息(根据id)./category/update_category.do*/
	@RequestMapping(value="/update_category",method=RequestMethod.POST)
	public void updateCategoryById(HttpServletRequest request,PrintWriter writer) {
		String id = request.getParameter("id");
		String text = request.getParameter("text");
		String description = request.getParameter("description");
		String parent = request.getParameter("parent");
		String leaf = request.getParameter("leaf");
		Category category = new Category();
		category.setId(Integer.parseInt(id));
		category.setText(text);
		category.setDescription(description);
		if(categoryService.update(category)){
			writer.write("{success:true, msg:'类别修改成功!'}");
		}else{
			writer.write("{success:true, msg:'类别修改失败!'}");
		}
	}
	
	/**
	 * 显示到combobox的列表的store
	 * @param request
	 * @param writer
	 */
	@RequestMapping(value="/combo_category",method=RequestMethod.GET)
	public void listCategoryToCombobox(HttpServletRequest request, PrintWriter writer) {
		List<Category> categories = categoryService.findAll();
		int len = categories.size();
		String preStr = "{totalCount:" + len + ",rows:[";
		String cenStr = "";
		int i=0;
		String douhao = ",";
		for(Category c : categories) {
			i++;
			cenStr += "{categoryId:'"+c.getId()+"', " +
					"text:'"+c.getText()+"'" +
			"}";
			if(i < len){
				cenStr += douhao;
			}
		}
		String endStr = "]}";
		String resultStr = preStr + cenStr + endStr;
		writer.write(resultStr);
	}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较全面的需求,下面是一个 Python 图书管理系统基于 SQLite 实现增删查改的代码实现,以及一个基于 Tk 的交互式界面: ```python import sqlite3 import tkinter as tk from tkinter import messagebox # 连接 SQLite 数据库 conn = sqlite3.connect('books.db') c = conn.cursor() # 创建图书表 c.execute('''CREATE TABLE IF NOT EXISTS books (id INTEGER PRIMARY KEY, title TEXT, author TEXT, year INTEGER, isbn INTEGER)''') # 添加图书函数 def add_book(): title = title_entry.get() author = author_entry.get() year = year_entry.get() isbn = isbn_entry.get() c.execute("INSERT INTO books VALUES (NULL,?,?,?,?)", (title, author, year, isbn)) conn.commit() messagebox.showinfo("Success", "Book added successfully!") clear_entries() # 删除图书函数 def delete_book(): selected = tree.selection() if not selected: messagebox.showerror("Error", "Please select a book to delete!") else: confirmation = messagebox.askyesno("Confirmation", "Are you sure you want to delete the selected book?") if confirmation: for item in selected: c.execute("DELETE FROM books WHERE id=?", (tree.item(item)["text"],)) conn.commit() messagebox.showinfo("Success", "Book deleted successfully!") clear_entries() # 更新图书函数 def update_book(): selected = tree.selection() if not selected: messagebox.showerror("Error", "Please select a book to update!") else: title = title_entry.get() author = author_entry.get() year = year_entry.get() isbn = isbn_entry.get() confirmation = messagebox.askyesno("Confirmation", "Are you sure you want to update the selected book?") if confirmation: for item in selected: c.execute("UPDATE books SET title=?, author=?, year=?, isbn=? WHERE id=?", (title, author, year, isbn, tree.item(item)["text"])) conn.commit() messagebox.showinfo("Success", "Book updated successfully!") clear_entries() # 查询图书函数 def search_book(): title = title_entry.get() author = author_entry.get() year = year_entry.get() isbn = isbn_entry.get() c.execute("SELECT * FROM books WHERE title=? OR author=? OR year=? OR isbn=?", (title, author, year, isbn)) rows = c.fetchall() if rows: for item in tree.get_children(): tree.delete(item) for row in rows: tree.insert("", tk.END, text=row[0], values=(row[1], row[2], row[3], row[4])) else: messagebox.showwarning("Not Found", "No matching books found!") # 清空输入框函数 def clear_entries(): title_entry.delete(0, tk.END) author_entry.delete(0, tk.END) year_entry.delete(0, tk.END) isbn_entry.delete(0, tk.END) # 创建 Tk 窗口 root = tk.Tk() root.title("Book Manager") # 创建标签和输入框 title_label = tk.Label(root, text="Title") title_label.grid(row=0, column=0, padx=10, pady=10) title_entry = tk.Entry(root) title_entry.grid(row=0, column=1) author_label = tk.Label(root, text="Author") author_label.grid(row=1, column=0, padx=10, pady=10) author_entry = tk.Entry(root) author_entry.grid(row=1, column=1) year_label = tk.Label(root, text="Year") year_label.grid(row=2, column=0, padx=10, pady=10) year_entry = tk.Entry(root) year_entry.grid(row=2, column=1) isbn_label = tk.Label(root, text="ISBN") isbn_label.grid(row=3, column=0, padx=10, pady=10) isbn_entry = tk.Entry(root) isbn_entry.grid(row=3, column=1) # 创建按钮 add_button = tk.Button(root, text="Add Book", command=add_book) add_button.grid(row=0, column=2, padx=10) delete_button = tk.Button(root, text="Delete Book", command=delete_book) delete_button.grid(row=1, column=2, padx=10) update_button = tk.Button(root, text="Update Book", command=update_book) update_button.grid(row=2, column=2, padx=10) search_button = tk.Button(root, text="Search Book", command=search_book) search_button.grid(row=3, column=2, padx=10) clear_button = tk.Button(root, text="Clear Entries", command=clear_entries) clear_button.grid(row=4, column=2, padx=10) # 创建表格 tree = tk.ttk.Treeview(root, columns=("title", "author", "year", "isbn")) tree.column("#0", width=50, minwidth=50) tree.column("title", width=200, minwidth=200) tree.column("author", width=150, minwidth=150) tree.column("year", width=100, minwidth=100) tree.column("isbn", width=100, minwidth=100) tree.heading("#0", text="ID", anchor=tk.W) tree.heading("title", text="Title", anchor=tk.W) tree.heading("author", text="Author", anchor=tk.W) tree.heading("year", text="Year", anchor=tk.W) tree.heading("isbn", text="ISBN", anchor=tk.W) tree.grid(row=5, column=0, columnspan=3, padx=10, pady=10) # 加载图书列表 c.execute("SELECT * FROM books") rows = c.fetchall() for row in rows: tree.insert("", tk.END, text=row[0], values=(row[1], row[2], row[3], row[4])) # 循环运行 Tk 窗口 root.mainloop() # 关闭 SQLite 连接 conn.close() ``` 这个代码实现了图书管理系统的基本功能,包括添加、删除、更新、查询和清空输入框。它还使用了 Tkinter 库创建了一个交互式界面,其中包括标签、输入框、按钮和表格。您可以将此代码保存为 `book_manager.py` 并在终端中运行,或使用 PyCharm 进行编辑和运行。 请注意,此代码仅作为示例和指导,您可以根据自己的需求和喜好进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值