Re the grid layout - you should really make a small effort on your part to try and find out relatively simple layout problems -
the unordered layout is all to do with your template - not our extension.
If you look at the sceen shots you will see you have div widths of 33.33% + a 10px margin - which will add up to more than 100% so of course it doesn't fit and wraps...
remove the 10px margin and they line up - all css is in your templates - there is
Firebug tutorial - made at great effort by the boss - its a tutorial to show you how to find out these things...
Now the buttons -
if you look in file - templates/YOUR_TEMPLATE/html/com_virtuemart/category/flexv2list.php from line 366 you will see the logic for the button display.
<?php if (!(number_format($product->prices['salesPrice'], 0, ',', '.')) and VmConfig::get('askprice', 1)) { //price is or not check-START
$url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id='.$product->virtuemart_product_id.'&virtuemart_category_id='.$product->virtuemart_category_id.'&tmpl=component');
?>
<a class="FlexibleAskforPrice" style="float:right;" rel="facebox" rev="iframe|600|900" href="<?php echo $url ?>"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_ASKPRICE') ?></a>
<?php } //price is or not check-END ?>
I just tested removing the price from an article "Fossil 16 - see attachment 3) on our test server and the button changed to "Call for Price" so the functionality is there..
It has a stock level and "Show call for price, when the price is empty" is checked in config...
I can't think of any other factors that would effect it - have you experimented with the settings?
are you sure your prices are empty?
(!(number_format($product->prices['salesPrice'], 0, ',', '.'))
Cheers