Question

J'ai besoin d'afficher le champ ID dans la forme d'édition d'une liste SharePoint.

Il y a un moyen de le faire?J'ai essayé un champ calculé et rien. Je sais que je peux voir le champ ID dans la vue, et si j'affiche en tant que mode d'accès. J'utilise WSS3.0

Était-ce utile?

La solution

Vous pouvez Ajoutez le champ ID au formulaire en utilisant du JavaScript dans 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>

Il y a une alternative Méthode qui n'utilise pas la bibliothèque de jQuery si vous préférez garder des choses légères.

Autres conseils

Vous pouvez le faire en créant un formulaire d'édition personnalisé assez facilement.Je le collez habituellement dans une table HTML rendue dans une webpart.Il peut y avoir une meilleure façon de le faire, mais c'est simple et ça marche.

La ligne de touche que vous souhaiterez regarder est SPFormefield.Controlmode.Cela indique SharePoint comment afficher le contrôle (invalide, affichage, modifier, nouveau).Donc, ce que vous voudrez faire est de vérifier si votre SPFIELD.InternalName=="ID" et si c'est le cas, définissez le contrôleMode à afficher.

Le reste est juste de la peluche pour rendre le reste de la liste.

J'espère que cela aide.

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";
   }

}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top