SharePoint 2013 中文站點更新列表字段的標題(Title)不能work

本文講述SharePoint 2013 中文站點更新列表字段的標題(Title)不能work的解決方案。

筆者的項目環境是個Varation的站點集,有中文和英文兩個子站點。

但是下面創建不修改字段標題的代碼,修改標題部分在英文站點裏面可以工作,但中文站點裏面沒有效果:

string dateField = myList.Fields.Add("DateFiled", SPFieldType.DateTime, false, false, null);
SPFieldDateTime dateFieldColumn = myList.Fields["DateFiled"] as SPFieldDateTime;
dateFieldColumn.DisplayFormat = SPDateTimeFieldFormatType.DateOnly;
string dateFieldColumnColumnTitle = "Date Field";                  
if (language == "zh-cn")
{
   dateFieldColumnColumnTitle= "日期字段";
}


dateFieldColumn.Title = dateFieldColumnColumnTitle;
dateFieldColumn.PushChangesToLists = true;                   
                
dateFieldColumn.Update(true);                  
dateFieldColumn.TitleResource.SetValueForUICulture(web.UICulture, dateFieldColumnColumnTitle);
dateFieldColumn.TitleResource.Update();
myList.Update();


後來查了下,用reflector 查看  SPField.Title 的set 代碼


發現在我這種條件下,剛好不會更新DisplayName,可能是微軟的一個Bug 吧。

於是果斷自己更新SchemaXml 後終於可以在中文站點正常工作了

string dateField = myList.Fields.Add("DateFiled", SPFieldType.DateTime, false, false, null);
SPFieldDateTime dateFieldColumn = myList.Fields["DateFiled"] as SPFieldDateTime;
dateFieldColumn.DisplayFormat = SPDateTimeFieldFormatType.DateOnly;
string dateFieldColumnColumnTitle = "Date Field";                  
if (language == "zh-cn")
{
   dateFieldColumnColumnTitle= "日期字段";
}

dateFieldColumn.Title = dateFieldColumnColumnTitle;
dateFieldColumn.PushChangesToLists = true;
                   
dateFieldColumn.SchemaXml = dataFieldColumn.SchemaXml.Replace(
                       "DisplayName=\"DateField\"",
                       string.Format("DisplayName=\"{0}\"", dateFieldColumnColumnTitle));

dateFieldColumn.Update(true);                  
dateFieldColumn.TitleResource.SetValueForUICulture(web.UICulture, dateFieldColumnColumnTitle);
dateFieldColumn.TitleResource.Update();
myList.Update();


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章