With respect to your second question, you could accomplish this using a dojo listener event based on a row click event. Here's an example I'm using to zoom to a feature represented by a row in a datagrid: dojo.connect(dijit.byId("grid"), 'onRowClick', function(e) {
var rowdata = grid.getItem(e.rowIndex);
var theId = rowdata.OBJECTID;
theFeatureLayer.clearSelection();
var query = new esri.tasks.Query();
query.objectIds = [theId];
theFeatureLayer.selectFeatures(query,esri.layers.FeatureLayer.SELECTION_NEW,function(features){
var theExtent = features[0].geometry.getExtent().expand(2.5);
map.setExtent(theExtent);
});
});
In your situation, just swap the field name in my example (OBJECTID) for the name of your field containing the URL. The rest of the routine would be pure javascript to open a URL in a new window: //Get the screen resolution and scale it back 10% (for use with the new window)
var theWidth= 0.9 * screen.width;
var theHeight= 0.9 * screen.height;
var theOptions = 'height=' + theHeight + ',left=25,top=25,width=' + theWidth;
window.open(theUrl,'_blank',theOptions);