SharePoint의 각 항목의 값을 Javascript에서 가져오고 설정하는 방법

1 소개



여기 후쿠오카는 계속 비로 뭔가 싫어집니다
그런데, SharePoint의 개발에 반드시 부속물인 것이, 각 항목치의 조작입니다.
소위 DOM 요소의 조작이군요. SharePoint 표준 기능은, 1행 텍스트 항목은 규정치를 설정할 수 있는데, 복수행 텍스트 항목은 규정치를 설정할 수 없거나, 정직 기능이 적다고 생각합니다.
그래서 다음과 같은 일을 하고 싶을 때에 항목값을 취득, 설정하는 방법을 소개합니다.
· 여러 줄 텍스트에 지정된 값의 HTML을 설정하고 싶습니다.
・저장시(postback시)에 자동적으로 값을 세트하고 싶다
· 선택 항목의 변화를 잡고 싶습니다.
· 페이지를 읽을 때 특정 항목에 특정 값이 입력되면 특정 제어를 원합니다.

2 주제



다음 코드는 jQuery를 사용합니다. SharePoint2013과 online에서 사용하고 있습니다.
설명하면, 다음의 캡쳐와 같이 렌더링 된 각 항목의 ID의 ff3 등의 (항목을 작성한 일련 번호가 되는) 값과 말미에 있는 항목의 종별명의 2개를 키로서 값을 취득 , 설정합니다.



다음은 코드입니다.

domgetset.js

// 項目の種別(本当はconstが良さそうだけどIEなので)
var Text      = 'Text';
var Richtext  = 'Richtext';
var DropDown  = 'DropDown';
var DateType  = 'DateType';
var UserGroup = 'UserGroup';

var SearchKeyff12 = 'ff12'; // DOM要素のキー
var setname       = 'Hello!';
var getname       = '';

// コール側
// テキストフィールドに設定
setElement(SearchKeyff12, Text, setname);
// テキストフィールドから取得
getname = getElement(SearchKeyff12, Text);

// コール元:ゲッター
// In1:DOMのID In2:DOMの種類 Retval:DOMの値
function getElement( SearchKeyID, DOMType ){
    var Retval = '';

    switch (DOMType) {
        case 'Text':
            // テキスト項目取得
            $("[id*='TextField']").each(function (i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    Retval = $(elem).val(); 
                }
            });
            break;

        case 'Richtext':
            // リッチテキスト項目取得(複数行)
            $("[id$='_TextField_inplacerte']").each(function(i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    Retval = $(elem).html(); 
                }
            });
            break;

        case 'DropDown':
            // 選択項目取得
            $("select[id*='_DropDownChoice']").each(function (i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    Retval = $(elem).val(); 
                }
            });
            break;

        case 'DateType':
            // 日付項目取得
            $("[name*='DateTimeFieldDate']").each(function(i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    Retval = $(elem).val(); 
                }
            });
            break;

        case 'UserGroup':
            // ユーザーグループ項目取得
            $("[id*='_UserField_hiddenSpanData']").each(function (k, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    Retval = $(elem).val(); 
                }               
            });
            break;

        default:
            break;
    } 
    return Retval;
}

// コール元:セッター
// In1:DOMのID In2:DOMの種類 In3:DOMの値
function setElement( SearchKeyID, DOMType, inputvalue ){

    switch (DOMType) {
        case 'Text':
            // テキスト項目設定
            $("[id*='TextField']").each(function (i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    $(elem).val(inputvalue); 
                }
            });
            break;

        case 'Richtext':
            // リッチテキスト項目設定(複数行)
            $("[id$='_TextField_inplacerte']").each(function(i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    $(elem).html(inputvalue); 
                }
            });
            break;

        case 'DropDown':
            // 選択項目設定
            $("select[id*='_DropDownChoice']").each(function (i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    $(elem).val(inputvalue); 
                }
            });
            break;

        case 'DateType':
            // 日付項目設定
            $("[name*='DateTimeFieldDate']").each(function(i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    $(elem).val(inputvalue); 
                }               
            });
            break;

        case 'UserGroup':
            // ユーザーグループ項目設定
            $("[id*='_UserField_upLevelDiv']").each(function (i, elem) {
                if ($(elem).is("[id*='" + SearchKeyID + "']")){
                    $(elem).html(inputvalue); 
                }               
            });
            break;

        default:
            break;
    } 
}



3 결론



뭔가 다른 좋은 방법이 있으면 공유 부탁드립니다. 그리고 코드상의 낭비를 지적해 주시면 기쁩니다.
그럼 고마워요.

좋은 웹페이지 즐겨찾기