|
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
>
|