Question

In SharePoint Lists, we can define new View and select the columns that we want to show.
I don't want to show the Title column but I also want to show the default Context Menu for the0 items on List.
How can I change the default "(linked to item with edit menu)" to another column instead of "Title" column?

Was it helpful?

Solution

i found the solution. it's really simple:

    SPList list = site.RootWeb.Lists["Tasks"];
    SPField field = list.Fields["Priority"];
    field.ListItemMenu = true;
    field.ListItemMenuAllowed = SPField.ListItemMenuState.Required;
    field.Update();
    list.Update();

and that's all.

OTHER TIPS

You can add these options to Field xml - LinkToItem="TRUE" LinkToItemAllowed="Required" ListItemMenu="TRUE" to display Item Context Menu.

So it looks like:

    <Field Type="Text" ID="{87AC637E-BB54-48A4-BB7A-93973F6814A1}" StaticName="Country"
 LinkToItem="TRUE" LinkToItemAllowed="Required" ListItemMenu="TRUE" ClassInfo="Menu"
 AuthoringInfo="$Resources:core,Linked_Item_With_Menu;" Name="Country" 
DisplayName="$Resources:resource,Field_Country;" Required="TRUE"
></Field>

You're not going to be able to do this without deploying a new column through a feature.

Looking at how the current title with menu column is generated:

<Field ID="{<a new guid here>}" Name="LinkTitle" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="LinkTitle" Group="$Resources:core,Base_Columns;" ReadOnly="TRUE" Type="Computed" DisplayName="$Resources:core,Title;" DisplayNameSrcField="Title" ClassInfo="Menu" AuthoringInfo="$Resources:core,Linked_Item_With_Menu;">

    <FieldRefs>
        <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" />
        <FieldRef ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" Name="LinkTitleNoMenu" />
        <FieldRef ID="{1344423c-c7f9-4134-88e4-ad842e2d723c}" Name="_EditMenuTableStart2" />
        <FieldRef ID="{2ea78cef-1bf9-4019-960a-02c41636cb47}" Name="_EditMenuTableEnd"/>
    </FieldRefs>

    <DisplayPattern>
        <FieldSwitch>
            <Expr>
                <GetVar Name="FreeForm" />
            </Expr>
            <Case Value="TRUE">
                <Field Name="LinkTitleNoMenu" />
            </Case>
            <Default>
                <Field Name="_EditMenuTableStart2" />
                <Field Name="LinkTitleNoMenu" />
                <Field Name="_EditMenuTableEnd" />
            </Default>
        </FieldSwitch>
    </DisplayPattern>
</Field>

Then it looks like you might get away with changing the references to LinkTitleNoMenu to the internal name of the field you want to show. However, you must make sure that the column you reference to is also a Site Column.

Do also ensure you change the static and display names of the column (replacing out 'LinkTitle' with something new of your choosing).

Try this code

SPList _list = _web.Lists["My List"];
SPField _field = _list.Fields["Name"];
_field.ListItemMenu = true;
_field.LinkToItemAllowed = SPField.ListItemMenuState.Required;
_field.ListItemMenuAllowed = SPField.ListItemMenuState.Required;
_field.Update();
_list.Update();

The Easiest way is to modify your view in SharePoint Designer :

Go to SPD 2013->Site->Your List->Your View .

Then add this two attributes to your FieldRef like this code :

<FieldRef Name="Title" ListItemMenu="TRUE" linkToItem="TRUE"/>

To be more explicit you find it in the View > ViewFields

<View Name="{D114F7F6-F87F-4A9F-BF24-D2A52B8BC6A7}" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" Type="HTML" DisplayName="Tous les documents" Url="YourURl" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/15/images/dlicon.png?rev=23" ><Query><OrderBy><FieldRef Name="FileLeafRef"/></OrderBy></Query><ViewFields><FieldRef Name="Title" ListItemMenu="TRUE" linkToItem="TRUE"/></ViewFields><RowLimit Paged="TRUE">30</RowLimit><Aggregations Value="Off"/><JSLink>clienttemplates.js</JSLink><XslLink Default="TRUE">main.xsl</XslLink><Toolbar Type="Standard"/></View></XmlDefinition>

Yuri's answer:

LinkToItem="TRUE" LinkToItemAllowed="Required" ListItemMenu="TRUE"

worked fine for me. I went the the columns folder in VS 2015 and went to the element xml definition and added those properties to the column that I want the context menu to appear like this:

    <?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">  
  <Field
       ID="{48af9b3e-3c9d-42a2-a226-b20c2db16127}"
       Name="ProjectName"
       DisplayName="Project Name"
       Type="Text"
       Required="FALSE"
       LinkToItem="TRUE"
       LinkToItemAllowed="Required"
       ListItemMenu="TRUE"
       Group="Custom Site Columns">
  </Field>
</Elements>

After changing the attributes, I went to the Sites folder and opened the designer, removed the old column and added it again. I then went to the list schema to double check if the attributes are present in the node. In the View node, I then removed the LinkToMenu element. After committing all the changes, I ran the app and the context menu is now added to the column I desired.

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