From: Jonathan S. <jso...@al...> - 2001-01-12 21:09:43
|
Tim, here goes: NOTE: DataView is the name of my listview that I have set up. My data i= s also read in from a comma delimited file and stored in the listview. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D sub DataView_ColumnClick { my $column =3D shift; ## i do this so that I can toggle between ascending and descending sorts ## 0 =3D ascending (A-Z), 1 =3D decending (Z - A) if ($lastcolumn =3D=3D $column) { # if you clicked the same column t= wice in a row $sortorder =3D 1 - $sortorder; # toggle between 1 and 0 values } else { $sortorder =3D 0; } $lastcolumn =3D $column; my %sortcol =3D &NewList($column, %data); &SortListItem(\%data,\%sortcol); return; } sub SortListItem { my ($data,$sortcol) =3D @_; my $check; my %data =3D %$data; my %sortcol =3D %$sortcol; $check =3D "$_" foreach (values %sortcol); $MainWindow->DataView->Clear(); ## clear the ListView window $index =3D 0; if ($sortorder =3D=3D 0) { ## this is sorting in ascending order foreach (sort { uc($sortcol{$a}) cmp uc($sortcol{$b}) } keys %sortc= ol) { my @newdata =3D split/,/,$data{$_}; ($fname,$lname,$build,$room,$adap,$ip,$year,$os,$type) =3D @newd= ata; # our list of items to sort if ($fname ne "") { $MainWindow->DataView->InsertItem(-item =3D> $index, -subitem= =3D> 0, -text =3D> "$fname", -image =3D> $img); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 1, -text =3D> "$lname"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 2, -text =3D> "$build"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 3, -text =3D> "$room"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 4, -text =3D> "$adap"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 5, -text =3D> "$ip"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 6, -text =3D> "$year"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 7, -text =3D> "$os"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 8, -text =3D> "$type"); ++$index; } $MainWindow->DataView->Update(); } } else { ## this is sorting in descending order foreach (sort { uc($sortcol{$b}) cmp uc($sortcol{$a}) } keys %sortc= ol) { my @newdata =3D split/,/,$data{$_}; ($fname,$lname,$build,$room,$adap,$ip,$year,$os,$type) =3D @newd= ata; if ($fname ne "") { $MainWindow->DataView->InsertItem(-item =3D> $index, -subitem= =3D> 0, -text =3D> "$fname", -image =3D> $img); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 1, -text =3D> "$lname"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 2, -text =3D> "$build"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 3, -text =3D> "$room"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 4, -text =3D> "$adap"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 5, -text =3D> "$ip"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 6, -text =3D> "$year"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 7, -text =3D> "$os"); $MainWindow->DataView->SetItem(-item =3D> $index, -subitem =3D= > 8, -text =3D> "$type"); ++$index; } $MainWindow->DataView->Update(); } } $MainStatus->Text($tempstatus); return; } sub NewList { ## This creates another hash to use only for sorting purposes. my ($column,%sortcol) =3D @_; my $sortthis; foreach (keys %sortcol) { my @info =3D split /,/, $sortcol{$_}; $sortthis =3D $info[$column]; $sortcol{$_} =3D "$sortthis"; } return(%sortcol); } =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D That should be all you need. If you have any more questions i will TRY t= o answer them. Jonathan Southwick Technical & Network Services Allegheny College, Meadsville, PA jso...@al... ----- Original Message ----- From: "Thomas, Timothy B" <tim...@lm...> To: <jso...@al...>; <per...@li...= > Sent: Friday, January 12, 2001 3:42 PM Subject: [perl-win32-gui-users] Listview column click sorting > Jonathon, > Can you post the code that you refer to in this old posting. I am looki= ng for the code that allows you to click on a column header and sort by that field. > http://www.mail-archive.com/per...@ht.../msg00280.html > Thanks, > Tim Thomas > > > > > > -----------------------------------------------------------------------= --- ----------------------- > Tim Thomas > Unix Systems Administrator > Lockheed Martin EIS =B7 Denver Data Center > 303-430-2281 > mailto:tim...@lm... > -----------------------------------------------------------------------= --- ----------------------- > > > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > http://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > |