열 헤더 맞춤 모드

일부 레이아웃에는 얇은 열 너비가 필요할 수 있지만 전체가 보기에 표시되어야 하는 더 긴 열 헤더 데이터를 포함하고 있습니다.

SpreadJS에는 이러한 시나리오를 지원하기 위해 기본 모드, 세로 모드, 스택 모드 등 여러 가지 다른 모드가 있습니다.

설명
app.js
index.html
styles.css

테이블 시트는 열 헤더 맞춤 모드를 조정하기 위한 다음의 세 가지 유형을 지원합니다.

  1. normal(default)
  2. vertical
  3. stack

사용자는 헤더 및 뷰포트 데이터를 적절히 표시하기 위해 테이블 시트 보기의 지정된 열에 대해 열 헤더 맞춤 모드를 설정할 수 있습니다.

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; // 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.
    headerFit?: "normal" | "vertical" | "stack" // the column header fit mode, default is normal
}

다음은 샘플 코드입니다.

//add table
dataManager.addTable("myTable", {
    remote: {
        read: {
            url: "https://demodata.mescius.io/northwind/api/v1/Orders"
        }
    }
});
//add custom view
var myView = orderTable.addView("myView", [
    {value: 'orderId',caption: "OrderId", width: 45, headerFit: "stack"},
    {value: 'customerId', caption: "CustomerName", width: 50,  headerFit: "stack"},
    {value: 'employeeId', caption: "EmployeeId", width: 16, headerFit: "stack"},
    {value: 'orderDate', caption: "orderDate", width: 136, },
    {value: 'requiredDate', caption: "requiredDate", width: 136, headerFit: "vertical"},
    {value: 'shippedDate', caption: "ShippedDate", width: 136, headerFit: "normal"},
    {value: 'shipVia', caption: "ShipVia", width: 16, headerFit: "stack"},
    {value: 'freight', caption: "Freight", width: 45, headerFit: "stack"},
    {value: 'shipName', caption: "ShipName", width: 100, headerFit: "normal"}
]);
// Set custom view into tableSheet.
tableSheet.setDataView(myView);
테이블 시트는 열 헤더 맞춤 모드를 조정하기 위한 다음의 세 가지 유형을 지원합니다. normal(default) vertical stack 사용자는 헤더 및 뷰포트 데이터를 적절히 표시하기 위해 테이블 시트 보기의 지정된 열에 대해 열 헤더 맞춤 모드를 설정할 수 있습니다. 다음은 샘플 코드입니다.
/*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.options.autoFitType = GC.Spread.Sheets.AutoFitType.cellWithHeader; //init a data manager var baseApiUrl = getBaseApiUrl(); var dataManager = spread.dataManager(); //add product table var productTable = dataManager.addTable("productTable", { remote: { read: { url: baseApiUrl + "/Product" } } }); //init a table sheet var sheet = spread.addSheetTab(0, "TableSheet1", GC.Spread.Sheets.SheetType.tableSheet); sheet.options.allowAddNew = false; //hide new row //bind a view to the table sheet var myView = productTable.addView("myView", [ { value: "Id", caption: "ID", width: 46, headerFit: "vertical" }, { value: "ProductName", caption: "Name", width: 220 }, { value: "QuantityPerUnit", caption: "Quantity Per Unit", width: 140, headerFit: "stack" }, { value: "UnitPrice", caption: "Unit Price", width: 45, headerFit: "stack", headerStyle: { backColor : "#F7A711", foreColor:"white", borderLeft: { color: "#367fc9", style: "thin" }, borderTop: { color: "#367fc9", style: "thick" }, borderRight: { color: "#367fc9", style: "thin" }, borderBottom: { color: "#367fc9", style: "thin" } }}, { value: "UnitsInStock", caption: "Units In Stock", width: 40, headerFit: "stack" }, { value: "UnitsOnOrder", caption: "Units On Order", width: 40, headerFit: "stack", headerStyle: { backColor : "#F7A711"}}, { value: "ReorderLevel", caption: "Reorder Level", width: 140, headerStyle: { borderLeft: { color: "black", style: "thin" }, borderTop: { color: "black", style: "thin" }, borderRight: { color: "black", style: "thin" }, borderBottom: { color: "black", style: "thin" }, } }, { value: "Discontinued", headerFit: "vertical", width: 70} ]); myView.fetch().then(function() { sheet.setDataView(myView); }); 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; }