Question

In my portal (Sharepoint Server 2010 Enterprise) I have a simple list with only the title field. I've created about 50 entries in the list.

In another list, I have a lookup column that pulls from the first list, and I want to be able to edit this list in GANTT view.

There is a similar post here, but the accepted solution was to not allow multiple choices in the destination column. The user is allowed to select multiple values from the dropdown list.

My issue is that items in that dropdown seem to be arranged in the order that they were created in the original list. It makes it very hard to find what you want to select!

How can I force that dropdown list into alphabetical order?

[edit]

Ah, I've discovered the issue only happens in GANTT view. It works fine in datasheet view.

[update]

Now, I found this page, with some ideas, and workarounds but not solutions. Maybe it would give someone some insight? The fellow had the same problem and was fighting hard.

This fellow suggests using jQuery, but doesn't provide a Sharepoint-adapted solution. Here is another jQuery solution, but I can't get it to work in a GANTT view.

Is there a way to force it to alphabetical order by editing the view's aspx page in Sharepoint Designer, perhaps?

Was it helpful?

Solution

I don't know if this could be considered an answer as opposed to just a comment. I don't have enough reputation to post a comment, but I can post an 'answer'. :D

You can't use SP Designer to customise a Gantt View in SP2010, unfortunately.

As for javascripting, I did a bit of digging on this by creating a Gantt view with a lookup, and then I copied the markup that SP generates when it creates the lookup field dropdown menu. For the dropdown menu, SP generates a table with 3 columns: one for the checkbox, one empty, and another for the display text. I managed to sort the table markup for the dropdown menu (see here).

However, the way the Gantt View dropdown appears to determine the item you select is based on the order of the items in the menu. So sorting it messes up how the dropdown works. Please note this is based on my observation of the control looking at it through FireFox's Inspect tool, as I did not check SP's (many) javascripts for (or that appear to relate to) a Gantt view.

Also, the dropdown is added after the Gantt view is loaded--it appears to be inserted when you click on the cell, and after you click on the dropdown button. IMHO, it is not worth sorting it via javascript.

Anyway, if you want to know the script I added (in a CEWP) to sort, here it is. But as I said, it messes up the dropdown item selection. I had to bind to the grid id (which may be different for your view). I have not tested this on lists with multiple lookups.

<script type="text/javascript">
if (window.addEventListener) {
    window.addEventListener('load', bindsort, false); 
} 
else if (window.attachEvent) { 
    window.attachEvent('onload', bindsort); 
}

function bindsort() {
    jQuery('#ctl00_m_g_ccd336a1_7da5_4212_a646_6a499e53404f_ListViewWebPartJSGrid').on(
        'click', '#jsgrid_combobox',
        function () { sortlkupddm(); });
}

// Sort the dropdown menu for the lookup field.
function sortlkupddm(){
    setTimeout( function () {
        var rows = jQuery('#jsgrid_combobox table.combobox-panel-table>tbody>tr.cb-dp-rw').detach();

        // Sort assuming text content.
        rows.sort(function (row1, row2) {
            var v1 = jQuery(row1).find('span.jsgrid-control-text').text();
            var v2 = jQuery(row2).find('span.jsgrid-control-text').text();
            if (v1 < v2) return -1;
            else return 1;
        });
        jQuery(rows).each(function(){
            jQuery('table.combobox-panel-table>tbody:last').append(jQuery(this));
        });
    }, 200);
}
</script>

OTHER TIPS

If you don't already have anything that is linked to that list as a lookup, you can do that manual switch. HOWEVER, be aware, that anything you already had linked into that list will change if you delete your data and reimport with the sorted values.

You risk doing more harm than good that way.

You're better off finding a solution that will allow for growth of the lookup list.

I was able to successfully do this manually. The easiest way is to switch to data sheet view, copy the content to Excel. Then sort your list. Delete the rows in the original list and paste the sorted content back from Excel. As your new list items are added on paste, the Item ID is assigned in the order pasted. Viola! Your lookup dropdown is alphabetical.

SP2010 & Office2010

Edit: Repercussions!!-The lookup column that used this list lost all the data. I had to go back and restore the list items. So, be careful with lookup columns.

You can only make this whith a list definition, unfortunately you can not make it with the UI. You have to Add your orderby in the View having BaseViewId 0. That worked for me

In your source list, try changing the default view to sort by Title instead of by ID and see if this affects your lookup column.

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top