# getSaveString (method)

> 시트 내에 변경된 내용(`입력(Added)`, `수정(Changed)`, `삭제(Deleted)`, `이동(Moved)`)을 querystring 형식의 문자열로 추출합니다.
> 추출한 데이터는 서버로 전송 후, 결과를 acceptChangedData 또는 applySaveResult를 이용해 직접 시트에 반영해야 합니다.
> 서버 응답(JSON) 구조와 관련된 상세 내용은 dataStructure를 참고하세요.

### Syntax

    string getSaveString( saveMode, col, urlEncode, delim, queryMode, validRequired, prefix, showAlert, saveAttr, saveExtraAttr );

### Parameters

Name | Type | Required | Description
--- | --- | --- | ---
saveMode | `number` | 선택 | 상태별 데이터 추출 여부 `0`:전체데이터 `1`:전체데이터 중 `Deleted` 만 제외 `2`:수정된 데이터(`Added`,`Changed`,`Deleted`) (`default`) `3`:수정된 데이터(`Added`,`Changed`,`Deleted`)+이동한 데이터(`Moved`)
col | `string` | 선택 | 저장 기준 열의 열이름 특정 열을 지정하면 행의 상태(`Added`,`Changed`,`Deleted`)를 무시하고 지정한 열의 데이터 유무에 따라 저장됨.
urlEncode | `boolean` | 선택 | 조합되는 문자열의 인코딩 여부(encodeURIComponent로 문자열을 인코딩함 ) `queryMode`별로 `default`가 달라짐 `0(false)`:`queryMode:0 (default)` `1(true)`:`queryMode:1/2 (default)`
delim | `string` | 선택 | queryMode값이 2인 경우에 데이터 사이 구분자 지정 (`default : "\|"`)
queryMode | `number` | 선택 | 서버로 전달될 데이터 구조 설정 `0`:json 구조로 전달 ex) Data={ "data":[ {"STATUS":"Added","ColName1":"홍길동","ColName2":25}, {"STATUS":"Changed","ColName1":"심청","ColName2":18} ]} 단 reqHeader속성에 {"Content-Type":"application/json"}를 추가시 앞에 "Data="이 제거되고 순수하게 json형식만 서버로 전송 `1`:QueryString 구조 전달 (`default`) ex) STATUS=Added&ColName1=홍길동&ColName2=25&STATUS=Changed&ColName1=심청&ColName2=18 `2`:열데이터 기준 QueryString 구조 전달 ex) STATUS=Added|Changed&ColName1=홍길동|심청&ColName2=25|18
validRequired | `boolean` | 선택 | 데이터 필수 입력 항목(Required col 설정된 열)에 대한 검사 여부 `0(false)`:필수 입력 항목 검사 안함 `1(true)`:필수 입력 항목 검사 실행 (`default`) `Validation`결과가 실패인 경우 규격 1. Validation 오류인 경우 - Code: `IBS010`, Message: `RequiredError`
prefix | `string` | 선택 | 열의 이름 앞에 설정할 문자열 여러개 시트를 한번에 서버로 보낼때 시트id_colName 형식으로 보낼 수 있음 ex) `sheet_saName=홍길동&sheet_saId=839212` 식으로 queryString이 만들어짐 (`default : ""`)
showAlert | `boolean` | 선택 | `validRequired`, `validSize`, `validEditMask`, `validResultMask` 설정 시 유효성 검사(Validation)를 통과하지 못한 경우 메시지 표시 여부 `0(false)`:메시지 표시 안함 (`default`) `1(true)`:메세지 표시 ※ 표시되는 메시지는 메세지 파일(예: `ko.js`등)에 정의된 내용을 사용합니다. (EditMaskError, SizeError, RequiredError, ResultMaskError)
saveAttr | `string` | 선택 | 각 셀의 속성값을 같이 추출하고자 하는 경우 Name+속성명 형식으로 설정 여러개 속성을 추출하고자 하는 경우 ","를 구분자로 작성 ex) `"sNameColor,sNoCanEdit"`
saveExtraAttr | `boolean` | 선택 | 시트에 (col)Name으로 정의하지 않은 데이터가 doSearch나 loadSearchData함수를 통해 로드 된 경우, 함수 호출시 해당 데이터를 같이 추출할 지 여부. 로드 데이터 첫번째 행의 keyset을 기준으로 추출됨 `0(false)`:시트에 (col)Name으로 정의 되지 않은 데이터 서버 전송 시 미포함 (`default`) `1(true)`:시트에 (col)Name으로 정의 되지 않은 데이터 서버 전송 시 포함
validSize | `boolean` | 선택 | 사이즈 설정(Size col)에 대한 유효성 검사 여부 설정. `0(false)`:사이즈 유효성 검사 안함 (`default`) `1(true)`:사이즈 유효성 검사 실행
validEditMask | `boolean` | 선택 | EditMask 설정(EditMask col)에 대한 유효성 검사 여부 설정. `0(false)`:EditMask 유효성 검사 안함 (`default`) `1(true)`:EditMask 유효성 검사 실행
validResultMask | `boolean` | 선택 | ResultMask 설정(ResultMask col)에 대한 유효성 검사 여부 설정. `0(false)`:ResultMask 유효성 검사 안함 (`default`) `1(true)`:ResultMask 유효성 검사 실행

`getSaveString` 호출 시 `validRequired`, `validSize`, `validEditMask`, `validResultMask` 속성을 설정한 경우, 해당 옵션에 대한 유효성 검사(Validation)가 수행되며, 검사 결과에 따라 다음과 같은 `코드(Code)`와 `메시지(Message)`가 반환됩니다.

Code | Message | Description
--- | --- | ---
`IBS010` | RequiredError | `validRequired` 설정 시 필수 입력 항목 Validation 오류
`IBS040` | SizeError | `validSize` 설정 시 사이즈 Validation 오류인 경우
`IBS050` | EditMaskError | `validEditMask` 설정 시 EditMask Validation 오류
`IBS060` | ResultMaskError | `validResultMask` 설정 시 ResultMask Validation 오류

### Return Value

String

    // 정상적인 처리시(querystring 형태)
    "sa_name=홍길동&sa_id=02712&sa_dept=031&..."

    // 저장(Added, Changed, Deleted) 대상이 없는 경우
    ""

    // validRequired 설정 시 Validation 오류인 경우
    "RequiredError|IBS010|오류발생 행 id|오류발생 열 Name"

### Example

    // 열이름이 CHK인 열에 체크된 데이터만 추출한다.
    // 데이터를 추출하면서 AA 컬럼에 Checked 속성도 추출한다.
    var saveStr = sheet.getSaveString({col:"CHK",saveAttr:"AAChecked"});
    $.ajax({
        url:"sheetSaveWorx.do",
        data:saveStr,
        success:function(data){
            // 저장성공시 처리
            sheet.acceptChangedData();
        }
    })

### Read More

- Required col
- FormatFix col
- acceptChangedData method
- applySaveResult method
- doSave method
- getSaveString method
- ValidCheck cfg
- ValidateMessage cfg

### Since

product | version | desc
--- | --- | ---
core | 8.0.0.0 | 기능 추가
core | 8.0.0.4 | `saveAttr` 기능 추가
core | 8.1.0.32 | `saveExtraAttr` 기능 추가
core | 8.3.0.24 | `validSize`, `validEditMask`, `validResultMask` 기능 추가