열 헤더 사용자 정의

사용자는 열 헤더의 너비, 캡션 및 스타일을 사용자 정의할 수 있습니다.

설명
app.js
index.html
styles.css

테이블 시트의 보기를 사용자 정의하려면 다음 3단계를 수행해야 합니다.

  1. 데이터 관리자에 테이블을 추가합니다.
  2. 다음 속성을 가진 사용자 정의 보기를 추가합니다.
interface IColumn {
    name: string; // the unique name of the column
    value?: string; // the value of the column, could be a field name of table from database, or formula which uses the fields names.
    caption?: string; // the caption of the column, which is the key of row data
    width?: number | string; // the width of the column, support number in pixel, or star size
    style?: GC.Data.StyleOptions; // the whole column style
    conditionalFormats?: Array<GC.Data.CellValueRuleOptions | GC.Data.SpecificTextRuleOptions | GC.Data.FormulaRuleOptions | GC.Data.DateOccurringRuleOptions | GC.Data.    Top10RuleOptions | GC.Data.UniqueRuleOptions | GC.Data.DuplicateRuleOptions | GC.Data.AverageRuleOptions | GC.Data.TwoScaleRuleOptions | GC.Data.ThreeScaleRuleOptions | GC.Data.DataBarRuleOptions | GC.Data.IconSetRuleOptions>;
    validator?: GC.Data.NumberValidatorOptions | GC.Data.DateValidatorOptions | GC.Data.TimeValidatorOptions | GC.Data.TextLengthValidatorOptions | GC.Data.FormulaValidatorOptions | GC.Data.FormulaListValidatorOptions | GC.Data.ListValidatorOptions;
    isPrimaryKey?: boolean; // mark the column as primary key column
    readonly?: boolean; // mark the column is readonly
    required?: boolean; // mark the column is required when insert a new row
    defaultValue?: any; // provide the default value when insert a new row, could be a const or a formula
    headerStyle?: GC.Data.HeaderStyleOptions; // the column header style.
}
  1. 사용자 정의 보기를 테이블 시트로 설정합니다. 사용자는 보기의 헤더 스타일을 설정하여 헤더 스타일을 사용자 정의할 수 있습니다.

다음은 샘플 코드입니다.

//add table
dataManager.addTable("myTable", {
    remote: {
        read: {
            url: "https://demodata.mescius.io/northwind/api/v1/Orders"
        }
    }
});
// add custom column header style
var headerStyle = {
    font: "italic bold 14pt Calibri",
    borderTop: {
        color: "lightgrey",
        style: "thick"
    },
    borderLeft: {
        color: "lightgrey",
        style: "thin"
    },
    borderRight: {
        color: "lightgrey",
        style: "thin"
    },
};
//add custom view
var myView = orderTable.addView("myView", [
    { value: "orderId", width: 100, headerStyle: headerStyle }, //set column width 100px
    { value: "orderDate", width: 200, headerStyle: headerStyle },
    { value: "freight", width: 100, headerStyle: headerStyle },
    { caption: "CompanyName", value: "customer.companyName", width: "2*", headerStyle: headerStyle }, //set column width with star size, which will calculate actual column width by the rest size of viewport
    { value: "customer.contactName", width: "*", headerStyle: headerStyle },
    { value: "customer.contactTitle", width: "*", headerStyle: headerStyle },
    { value: "=[@]", caption: "Address", width: "3*", headerStyle: headerStyle }
]);
// Set custom view into tableSheet.
tableSheet.setDataView(myView);
테이블 시트의 보기를 사용자 정의하려면 다음 3단계를 수행해야 합니다. 데이터 관리자에 테이블을 추가합니다. 다음 속성을 가진 사용자 정의 보기를 추가합니다. 사용자 정의 보기를 테이블 시트로 설정합니다. 사용자는 보기의 헤더 스타일을 설정하여 헤더 스타일을 사용자 정의할 수 있습니다. 다음은 샘플 코드입니다.
/*REPLACE_MARKER*/ /*DO NOT DELETE THESE COMMENTS*/ window.onload = function() { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 0 }); initSpread(spread); }; function initSpread(spread) { spread.suspendPaint(); spread.clearSheets(); spread.options.autoFitType = GC.Spread.Sheets.AutoFitType.cellWithHeader; //init a data manager var tableName = "Supplier"; var baseApiUrl = getBaseApiUrl(); var apiUrl = baseApiUrl + "/" + tableName; var dataManager = spread.dataManager(); var myTable = dataManager.addTable("myTable", { remote: { read: { url: apiUrl } } }); //init a table sheet var sheet = spread.addSheetTab(0, "TableSheet1", GC.Spread.Sheets.SheetType.tableSheet); sheet.options.allowAddNew = false; //hide new row //column headers style var headerStyle = { font: "italic 10pt Calibri" }; var headerStyle2 = { font: "12pt Calibri", backColor : "#F7A711", foreColor:"white", hAlign:"left", borderTop: { color: "black", style: "thick" }, borderLeft: { color: "black", style: "thick" }, borderRight: { color: "black", style: "thick" }, }; var headerStyle3 = { font: "bold 14pt Calibri", borderTop: { color: "blue", style: "thick" }, borderLeft: { color: "blue", style: "thin" }, borderRight: { color: "blue", style: "thin" }, }; //bind a view to the table sheet myTable.fetch().then(function () { var view = myTable.addView("myView", [ { value: "Id", width: 80, headerStyle: headerStyle }, { value: "CompanyName", width: 200, caption :"Company Name", headerStyle: headerStyle }, { value: "ContactName", width: 150, caption :"Contact", headerStyle: headerStyle2 }, { value: "ContactTitle", width: 200, caption :"Title", headerStyle: headerStyle2 }, { value: "Address", width: 200, headerStyle: headerStyle3 }, { value: "City", width: 150, caption :"City", headerStyle: headerStyle3 }, { value: "State", width: 100, caption :"State" }, { value: "Region", width: 100, caption :"Region" } ]); sheet.setDataView(view); }); spread.resumePaint(); } function getBaseApiUrl() { return window.location.href.match(/http.+spreadjs\/learn-spreadjs\//)[0] + 'server/api'; }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="ko-kr" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <!-- Promise Polyfill for IE, https://www.npmjs.com/package/promise-polyfill --> <script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-resources-ko/dist/gc.spread.sheets.resources.ko.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div id="ss" class="sample-spreadsheets"></div> <div id="optionContainer" class="optionContainer"> </div> </div> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .sample-spreadsheets { width: 100%; height: 100%; overflow: hidden; float: left; }