2015-11-01 45 views
0

我在Designer 2013的SP2013中自定義了NewForm.aspx。我努力從SharePoint Designer 2013中的XSLT列表視圖Web部件獲取列值。我需要使用JQuery中的列進行操作(如隱藏,禁用等) )。目前,我通過將開發工具懸停在其上的列ID來獲取列ID,但這不是正確的方式,因爲ID將在質量/生產中發生變化。 例子: -如何獲取在js中的xslt列表視圖webpart中的列表列?

$("#ctl00_ctl33_g_1ea47d6f_1fed_4426_8e49_cda9970429d6_ff21_ctl00_ctl00_TextField").val("Close"); 

我想是這樣的: - 在SP設計師

$("#column2").val("Close"); 

我的XSLT 2013看起來像: -

<tr><td> 
<H3>column2</H3> 
</td> 
<td> 
<SharePoint:FormField runat="server" id="ff3{$Pos}" ControlMode="Edit"  
FieldName="column2" __designer:bind=" 
{ddwrt:DataBind('u',concat('ff3',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@column2')}"/> 
<SharePoint:FieldDescription runat="server" id="ff3description{$Pos}" FieldName="column2" ControlMode="Edit"/> 
</td> 
</tr> 

請協助。

回答

0

它是標準的ASP.NET行爲,服務器控件的ID不是代表控件的HTML元素的ID。許多SharePoint控件都由許多DIV和SPAN(尤其是人員,格式化文本等列)呈現。因此讀取和設置它們的值是非常複雜的過程。

通常,您可以使用title屬性來搜索包含特定字段的HTML元素的HTML標記。標題屬性包含該字段的名稱。對於必填字段,它還包含所需的信息。或者您可以嘗試搜索ID爲以該字段的內部名稱開頭的元素。但是在這兩種情況下,您都需要添加一些額外的邏輯來找到包含字段值的正確控件。邏輯將需要反映你正在尋找的領域的類型。

最簡單的方法是使用一些類似SPJSutilityform designer的庫來處理表單域。

即使是最簡單的文本框,也不能通過將enabled屬性設置爲false來禁用,因爲在這種情況下,該值不會在服務器上處理。

+0

嗨,簡,謝謝你的帖子。這很有幫助。其實,我正在尋找字段ID屬性,所以我可以在JQuery中使用它來隱藏/啓用等。但是,XSLT不會給我ID。我從開發人員工具中獲取ID,但當我轉移到其他環境時,它會發生變化。你能幫我解決嗎? –

相關問題