我需要在共享點列表的編輯表單中顯示ID字段。如何在編輯表單中將ID字段顯示爲只讀列表?
有辦法做到這一點嗎?我試了一個計算的字段,什麼也沒有。 我知道我可以看到視圖中的ID字段,並且如果我顯示爲訪問模式。 我正在使用WSS3.0
我需要在共享點列表的編輯表單中顯示ID字段。如何在編輯表單中將ID字段顯示爲只讀列表?
有辦法做到這一點嗎?我試了一個計算的字段,什麼也沒有。 我知道我可以看到視圖中的ID字段,並且如果我顯示爲訪問模式。 我正在使用WSS3.0
您可以add the ID field to the form using some JavaScript in a 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>
如果您希望保持輕量化,還有一個替代方案method that doesn't use the jQuery library。
謝謝瑞安。而已。很容易實現。 – 2010-07-26 12:44:41
您可以通過很容易地創建自定義編輯窗體來完成此操作。我通常將其粘貼到Web部件中呈現的HTML表格中。這樣做可能有更好的方法,但它很簡單並且可行。
你要看的關鍵是spFormField.ControlMode。這告訴SharePoint如何顯示控件(無效,顯示,編輯,新建)。所以你要做的是檢查你的spField.InternalName ==「ID」,如果是,請將ControlMode設置爲Display。
剩下的只是渲染列表的其餘部分。
希望這會有所幫助。
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";
}
}
是否經由前端或列表定義功能創建列表?自定義編輯表單是您的選擇嗎? – Shaneo 2010-07-21 15:09:07
通過前端創建它。是的,自定義編輯表單是一個選項。 – 2010-07-21 17:44:10