Solved

ListBox To ListBox Drag Drop And Dataset?

Posted on 2009-05-19
2
320 Views
Last Modified: 2012-06-27
I've found many good articles concerning ListBox drag-n-drop, but I'm still unsure how to update each ListBox's datasource. In this case each Listbox needs to connect to it's own dataset. Each datset will contain 4 columns, one of which is displayed in the ListBox. Upon drag-n-drop, the entire row needs transfered to the opposite dataset. I need to move data back-n-forth as well, not just one-way.

ListBox1 (displays only FirstLastName)  
ds1.tb1 [ID, FirstLastName, Mid, Bday, SS] (entire row moved to other dataset)

ListBox2 (displays only FirstLastName)  
ds2.tb2 [ID, FirstLastName, Mid, Bday, SS]
0
Comment
Question by:pointeman
2 Comments
 
LVL 12

Accepted Solution

by:
wht1986 earned 500 total points
ID: 24427982
In the code below, I have 2 listboxes bound to 2 different datasets (but same schema)

To start with I fill one dataset with values from the database.

The code below shows how I can drag and drop items between the listboxes while moving the associated datarow from 1 dataset table to another.
namespace Win_Forms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            this.facilitiesTableAdapter.Fill(this.ds1.Facilities);          
        }
 
        private void listBox1_DragDrop(object sender, DragEventArgs e)
        {
            DataRow frow = (DataRow)(e.Data.GetData(e.Data.GetFormats()[0]));
            ds1.Facilities.ImportRow(frow);
            ds2.Facilities.Rows.Remove(frow);
        }
 
        private void listBox2_DragDrop(object sender, DragEventArgs e)
        {
            DataRow frow = (DataRow)(e.Data.GetData(e.Data.GetFormats()[0]));
            ds2.Facilities.ImportRow(frow);
            ds1.Facilities.Rows.Remove(frow);
        }
 
        private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (listBox1.Items.Count == 0)
                return;
            int index = listBox1.IndexFromPoint(e.X, e.Y);
            DoDragDrop(ds1.Facilities[index], DragDropEffects.All);
        }
 
        private void listBox2_MouseDown(object sender, MouseEventArgs e)
        {
            if (listBox2.Items.Count == 0)
                return;
 
            int index = listBox2.IndexFromPoint(e.X, e.Y);
            DoDragDrop(ds2.Facilities[index], DragDropEffects.All);
        }
 
        private void listBox1_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.All;
        }
 
        private void listBox2_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.All;
        }
    }
}

Open in new window

0
 

Author Closing Comment

by:pointeman
ID: 31583265
Excellent, thanks.........
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question