Reputation: 11
How can I transfer selected rows
from a Treeview
to another Treeview
when I click a Button
?
I've been trying to create a ListStore
with the selections of treeview1
and give it to treeview2
as a TreeModel
, but I haven't been successful.
UPDATE: I figured out a way, by using OnTreeservicesRowActivated
OnTreeservicesRowActivated event (can still be done with a button) and the code below. It "mixes" the rows if I click too fast, but that's a minor annoyance. Thanks for the answers
using System;
using Gtk;
using MySql.Data.MySqlClient;
namespace Proyect
{
public partial class Window : Gtk.Window
{
public Window() :
base(Gtk.WindowType.Toplevel)
{
this.Build();
//Adds columns to TreeViews
CreateTreeView(treeservices,tree2);
treeservices.Selection.Mode = SelectionMode.Single;
}
//List to populate tree2.
ListStore tree2list = new ListStore(typeof(string), typeof(string), typeof(string));
//Class for validating entry's and misc.
Validation val = new Validation();
//MySql connection
MySqlConnection c = new MySqlConnection(//connectionstring)
MySqlDataReader dr;
MySqlCommand cmd;
//CellRendererText for treeservices.
CellRendererText cellserv1 = new CellRendererText();
CellRendererText cellserv2 = new CellRendererText();
CellRendererText cellserv3 = new CellRendererText();
void CreateTreeView(TreeView treeservices, TreeView tree2 )
{
treeservices.AppendColumn("Code", cellserv1, "text", 0);
treeservices.AppendColumn("Name", cellserv2, "text", 1);
treeservices.AppendColumn("Price", cellserv3, "text", 2);
treeservices.Model = Services();
tree2.AppendColumn("Code", new CellRendererText(), "text", 0);
tree2.AppendColumn("Name", new CellRendererText(), "text", 1);
tree2.AppendColumn("Price", new CellRendererText(), "text", 2);
}
ListStore Services()
{
//Returns a ListStore from local MySql Database
}
//Adds a service to tree2 when a row is double clicked
protected void OnTreeservicesRowActivated(object o, RowActivatedArgs args)
{
tree2list.AppendValues(cellserv1.Text, cellserv2.Text, cellserv3.Text);
tree2.Model = tree2list;
}
}
Upvotes: 1
Views: 406
Reputation: 81
Add Afterselect event on your treeview object
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
//Set TreeNode variable to the selected node
TreeNode Nodetosave = this.treeView1.SelectedNode;
//Add Nodetosave to your second tree in your button event
}
This is my first ever stackoverflow answer , please excuse if i missed any formating. If you want to store multiple TreeNodes then make a list of TreeNodes and add every selected treenode, then iterate over them in you button event and add them one by one to your other tree.
Upvotes: 1