Come mostrare il campo ID come readonly in Modifica modulo, di un elenco di SharePoint?
-
26-09-2020 - |
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
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 + " </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";
}
.
}