:: Forum >>

Sorting hyperlinks

I am trying to sort a column which contains hyperlinks. I believe the sorting is based on the entire string, so it will sort the URL of the link before the actual text of the link.

Is there a graceful way to sort hyperlinks?

Thanks in advance.
Mike
Wednesday, February 25, 2004
Grid uses data/text property for the cell content and data/value for the column sort (to compare cells). By default data/value = data/text. In your case you need to provide clean string into data/value property and formatted (as hyperlink) string into data/text.

obj.setProperty("data/text", function(i,j){return myData[i][j]})
obj.setProperty("data/value", function(i,j){return ...})
Alex (ActiveWidgets)
Wednesday, February 25, 2004
Alex - would you care to finish your example here? I think that I could use it.

many thanks.
Sorting hyperlinks - please finish
Monday, October 11, 2004
Let's say you have a hyperlink in a column 2. So the data array will look like

myData = [
["cell text", "another cell", "<a href='link.htm'>label text</a>", ...],
...
];


To remove <a> tags we can use simple regular expression:

obj.setProperty("data/value", function(i,j){
if (j==2){
return myData[i][j].replace(/<.+?>/g, "");
}
else {
return myData[i][j];
}
})


The opposite approach could seem much more natural - supply values and format them to text just before displaying on the client side. However it has a higher performance cost - you have to format all columns for display but you have to extract values from just one column for sorting.
Alex (ActiveWidgets)
Monday, October 11, 2004
Oh that is sooo cool!

Another ActiveWidget wrinkle in my brain!!!
And it sure beats the heck out of the associative array that I was just trying to hook up!

Thanks a bunch Alex - keep up the awesome work!
Michael
Monday, October 11, 2004
Hmm, my link looks like this:

<a href='/PublicSearch/ProdDetail1.asp?C=3&SV=&DT=1&CID=121&PID=2'>10/15/2001<\a>
and it doesn't seem to return just the text, in this case, a date.
Michael
Monday, October 11, 2004
Update:

It appears as if I was attempting to place an HREF link into the Value/Text property which was specified with a format of 'date'.

That was breaking my code and causing the data to not be displayed.

The resulting code is as follows:

var string = new Active.Formats.String;
var number = new Active.Formats.Number;
var date = new Active.Formats.Date;
    // define formatting rule for text output
number.setTextFormat("");
    date.setDataFormat("ISO8601");
    date.setTextFormat("yyyy-mm-dd");
    date.setErrorText("");
    date.setErrorValue(-1);
    var myColumns = ["Company Name", "Product Name", "EPA Reg #", "TIRMS Date", "<img src='/images/icon_pdf_sm.gif'> Labels", "<img src='/images/icon_pdf_sm.gif'> MSDS", "<img src='/images/icon_pdf_sm.gif'> SUPPs", "<img src='/images/icon_pdf_sm.gif'> TBs"];
    var formats = [string, string, string, date, date, date, date, date];
    // create ActiveWidgets Grid javascript object
    var obj = new Active.Controls.Grid;
    // set number of rows/columns
    obj.setRowProperty("count", myData.length);
    obj.setColumnProperty("count", 8);
    // set column formatting
    obj.setColumnText(function(i){return myColumns[i]});
    obj.setColumnHeaderHeight("20px");
    
    obj.setDataText(function(i, j){if ((j==4)||(j==5)||(j==6)||(j==7)){return myData[i][j];
}else{return formats[j].dataToText(myData[i][j]);}});
obj.setDataValue(function(i, j){if ((j==4)||(j==5)||(j==6)||(j==7)){return myData[i][j].replace(/<.+?>/g, "");
}else{return formats[j].dataToValue(myData[i][j]);}});

    // write grid html to the page
    document.write(obj);


I specifically had to use

date.setDataFormat("ISO8601");
date.setTextFormat("yyyy-mm-dd");


and change the way I was retrieving the data from date columns within a table in SQL Server.

An example of how to get a nicely formatted date which the grid can process and subsequently sort on is:

SELECT CONVERT(CHAR(10),DocumentModifiedDT,126) as 'myDate' from tableName

Will return the date value as yyyy-mm-dd
ie. '2004-10-15'

HTH, as I've spent 3 full days learning how to make this work :-)
Michael
Tuesday, October 12, 2004
i just formatted my links with and id that used the url text and it worked fine... I like keeping it simple

<a id="firstlink" href="whatever" >firstlink</a> and so on.....
Daron
Wednesday, October 13, 2004
Daron,

Right simple is good - however in my case, my link text was a date, and to sort those properly, I needed to do what I posted.
Michael
Friday, November 12, 2004

This topic is archived.


Back to support forum

Forum search