Domanda

Ho bisogno di mostrare il campo ID nel modulo di modifica di un elenco di SharePoint.

C'è un modo per farlo?Ho provato un campo calcolato e niente. So che posso vedere il campo ID nella vista e se mostro come modalità di accesso. Sto usando WSS3.0

È stato utile?

Soluzione

Puoi Aggiungi il campo ID al modulo utilizzando alcuni JavaScript in un CEWP .

<script type="text/javascript"
   src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
</script>
<script type="text/javascript">

$(function() {
  // Get the ID from the query string
  var id = getQueryString()["ID"];

  // Find the form's main table
  var table = $('table.ms-formtable');

  // Add a row with the ID in
  table.prepend("<tr><td class='ms-formlabel'><h3 class='ms-standardheader'>ID</h3></td>" +
                "<td class='ms-formbody'>" + id + "&nbsp;</td></tr>");
})

function getQueryString() {
  var assoc = new Array();
  var queryString = unescape(location.search.substring(1));
  var keyValues = queryString.split('&');
  for (var i in keyValues) {
    var key = keyValues[i].split('=');
    assoc[key[0]] = key[1];
    }
  return assoc;
}
</script>
.

C'è un'alternativa Metodo che non utilizza la libreria jQuery se preferisci mantenere le cose leggere.

Altri suggerimenti

Puoi farlo creando un modulo di modifica personalizzato abbastanza facilmente.Di solito lo attacco in una tabella HTML resa all'interno di un WebPart.Potrebbe esserci un modo migliore per farlo, ma è semplice e funziona.

La linea chiave che vorresti guardare è SPFORMFIELD.CONTROLMODE.Questo dice a SharePoint come visualizzare il controllo (non valido, display, modifica, nuovo).Quindi cosa vorresti fare è controllare se il tuo spfield.internalname=="ID" e se lo è, impostare il controllo del controllo per essere visualizzato.

Il resto è solo fluff per il rendering del resto dell'elenco.

Spero che questo aiuti.

HtmlTable hTable = new HtmlTable();
HtmlTableRow hRow = new HtmlTableRow();
HtmlTableCell hCellLabel = new HtmlTableCell();
HtmlTableCell hCellControl = new HtmlTableCell();
SPWeb spWeb = SPContext.Current.Web;

// Get the list we are going to work with
SPList spList = spWeb.Lists["MyList"];

// Loop through the fields
foreach (SPField spField in spList.Fields)
{
   // See if this field is not hidden or hide/show based on your own criteria
   if (!spField.Hidden && !spField.ReadOnlyField && spField.Type != SPFieldType.Attachments && spField.StaticName != "ContentType")
   {
     // Create the label field
     FieldLabel spLabelField = new FieldLabel();
     spLabelField.ControlMode = _view; 
     spLabelField.ListId = spList.ID;
     spLabelField.FieldName = spField.StaticName;

     // Create the form field
     FormField spFormField = new FormField();

// Begin: this is your solution here.
     if (spField.InteralName == "ID")
     { spFormField.ControlMode = SPControlMode.Display; }
     else
     { spFormField.ControlMode = _view; }
// End: the end of your solution.

     spFormField.ListId = spList.ID;
     spFormField.FieldName = spField.InternalName;

     // Add the table row
     hRow = new HtmlTableRow();
     hTable.Rows.Add(hRow);

     // Add the cells
     hCellLabel = new HtmlTableCell();
     hRow.Cells.Add(hCellLabel);
     hCellControl = new HtmlTableCell();
     hRow.Cells.Add(hCellControl);

     // Add the control to the table cells
     hCellLabel.Controls.Add(spLabelField);
     hCellControl.Controls.Add(spFormField);

     // Set the css class of the cell for the SharePoint styles
     hCellLabel.Attributes["class"] = "ms-formlabel";
     hCellControl.Attributes["class"] = "ms-formbody";
   }
.

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top