Giter VIP home page Giter VIP logo

nhn / tui.grid Goto Github PK

View Code? Open in Web Editor NEW
2.4K 56.0 384.0 66.33 MB

πŸžπŸ”‘ The Powerful Component to Display and Edit Data. Experience the Ultimate Data Transformer!

Home Page: http://ui.toast.com/tui-grid/

License: MIT License

JavaScript 27.46% CSS 3.34% TypeScript 66.08% HTML 2.88% Vue 0.24%
datagrid treegrid datatable excel spreadsheet tabular-data toast-ui preact grid reactivity

tui.grid's Introduction

TOAST UI Grid

The Powerful Component to Display and Edit Data. Experience the Ultimate Data Transformer!

GitHub release npm GitHub license PRs welcome code with hearth by NHN Cloud

tui-grid

🚩 Table of Contents

πŸ“¦ Packages

The functionality of TOAST UI Grid is available when using the Plain javaScript, React, Vue Component.

πŸ€– The Toast UI Grid Is an Ultimate Transformer

Data Can Be Displayed in Any Format

Styling

The TOAST UI Grid is a component that can display, edit, add, and delete multiple data. You can append units to the data shown and use html to represent images and links instead of textual data.

style

Summary

The summary function allows you to caculate on multiple rows of data and display the results. It automatically calculates the total sum, the average, the maximum and minimum value, and updates each result whenever the value changes.

summary

Tree Data

Starting with version 3 or later, you can use tree data to represent them in a hierarchy. Now let's process the data we want.

tree

Provides a Custom Editing Elements

In order to edit the data, you don't need to use html to create the editing elements yourself. It supports various input elements such as text, select box, checkbox, radio button. You can set the data editing method just by setting options. You can also show editing elements whatever you want through Custom Editor.

59417111-9e181280-8e01-11e9-8de7-2df819b36354

Simple, Easy to Use Themes

It has three themes: default, striped (zebra pattern), and clean theme. You can easily add the desired design to the themes provided through the theme API. Themes API has been improved since version 3, allowing you to easily control the background color of the header / body area and vertical / horizontal border lines without modifying CSS styles directly. Use the theme to customize your grid.

default striped clean
theme-default theme-striped theme-clean

In addition, a variety of powerful features can be found on the demo page below. πŸ‘‡πŸ‘‡πŸ‘‡

🎨 Features

🐾 Examples

Here are more examples and play with TOAST UI Grid!

TypeScript

If you are using TypeScript, you must use import module = require('module') to import the Grid module. See "export = " and "import = require()".

import Grid = require('tui-grid');

const instance = new Grid({
  // ...options
});

🌏 Browser Support

Chrome Chrome IE Internet Explorer Edge Edge Safari Safari Firefox Firefox
Yes 9+ Yes Yes Yes

πŸ”§ Pull Request Steps

TOAST UI products are open source, so you can create a pull request(PR) after you fix issues. Run npm scripts and develop yourself with the following process.

Setup

Fork master branch into your personal repository. Clone it to local computer. Install node modules. Before starting development, you should check if there are any errors.

$ git clone https://github.com/{your-personal-repo}/tui.grid.git
$ npm install
$ cd packages/toast-ui.grid
$ npm install
$ npm run test

Develop

Let's start development! You can see your code reflected as soon as you save the code by running a server. Don't miss adding test cases and then make green rights.

Run webpack-dev-server

$ npm start

Run storybook

$ npm run storybook

Run cypress test

$ npm run test

Pull Request

Before uploading your PR, run test one last time to check if there are any errors. If it has no errors, commit and then push it!

For more information on PR's steps, please see links in the Contributing section.

πŸ’¬ Contributing

πŸ”© Dependencies

🍞 TOAST UI Family

πŸš€ Used By

πŸ“œ License

This software is licensed under the MIT Β© NHN Cloud.

tui.grid's People

Contributors

dependabot[bot] avatar frederic34 avatar hooslab avatar jajugoguma avatar jeiea avatar jithinks97 avatar joebordes avatar js87zz avatar juliencampion avatar jungeun-cho avatar kimgenius avatar kuckjwi0928 avatar lee-yang-jae avatar luke1982 avatar mastergenius avatar moonchanyong avatar paulovieira avatar ryum91 avatar seo-rii avatar seonim-ryu avatar sohee-lee7 avatar xhildashazivari avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tui.grid's Issues

κ·Έλ¦¬λ“œμ˜ λ‚΄μš©μ„ excel export λ°›κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

κ·Έλ¦¬λ“œμ˜ λ‚΄μš©μ„ excel export λ°›κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
Netμ• λ“œμ˜¨ κΈ°λŠ₯을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  νŽ˜μ΄μ§•μ„ ν•΄μ„œ gridλ₯Ό 그리고 μžˆλŠ”λ°,
options κ°’μœΌλ‘œ toolbar: true만 ν•΄μ„œλŠ” excel export κΈ°λŠ₯을 μ‚¬μš©ν• μˆ˜ μ—†λŠ”κ±΄κ°€μš”?
μƒ˜ν”Œμ½”λ“œλ‚˜ κ°€μ΄λ“œ νŽ˜μ΄μ§€μ—μ„œλŠ” ν•΄λ‹Ή λ‚΄μš©μ— λŒ€ν•œ 뢀뢄이 μ—†μ–΄μ„œ 문의 λ“œλ¦½λ‹ˆλ‹€.

grid row click μ‹œ grid_id.addRowClassName(rowKey, 'myStyle') μ‹œ μ—λŸ¬

κ·Έλ¦¬λ“œ 둜우 클릭 μ‹œ μ•„λž˜μ™€ 같이 ν–ˆμ„ λ•Œ,
grid_id.addRowClassName(rowKey, 'myStyle');

λ‹€μŒκ³Ό 같은 슀크립트 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
grid.min.js:5 Uncaught TypeError: Cannot read property 'addClassName' of undefined
at child.addRowClassName (grid.min.js:5)

확인 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

μ…€ 병합 문의 λ“œλ¦½λ‹ˆλ‹€

μ•ˆλ…•ν•˜μ„Έμš”.
예제λ₯Ό 보면 μ…€ 병합이 μ•„λž˜μ™€ 같이 λ°μ΄ν„°μ˜μ—­μ— κ΅¬ν˜„μ΄ λ˜μ–΄ μžˆλŠ”λ°μš”.

{
    name: '19',
    artist: 'Adele',
    release: '2008.01.27',
    type: 'EP',
    genre: 'Pop,R&B',
    _extraData: {
        rowSpan: { // Merge rows
            artist: 3,
            genre: 2
        }
    }
},

ν˜Ήμ‹œ 이 방법 말고, 컬럼의 μ†μ„±μœΌλ‘œ 병합을 κ΅¬ν˜„ν•  μˆ˜λŠ” μ—†λŠ” κ±΄κ°€μš”?
그리고 _extraData 의 속성듀은 μ–΄λ””μ—μ„œ μ°Ύμ•„λ³Ό 수 μžˆμ„κΉŒμš”?
κ°μ‚¬ν•©λ‹ˆλ‹€.

editoptions 에 changeBeforeCallback ν•¨μˆ˜ κΈ°λŠ₯은 μ–΄λ–»κ²Œ κ΅¬ν˜„ν•΄μ•Ό ν• κΉŒμš”?

1.9.0 λ²„μ Όμ—μ„œ changeBeforeCallback ν•¨μˆ˜μ—μ„œ μƒν’ˆ μ†ŒλΆ„λ₯˜ 선택에 λ”°λ₯Έ 가격, 할인λ₯  등을 μ…‹νŒ…ν•΄ μ£Όμ—ˆλŠ”λ°,

2.0.0 λ²„μ Όμ΄μƒμ—μ„œ changeBeforeCallback ν•¨μˆ˜κ°€ 없어진것 κ°™μŠ΅λ‹ˆλ‹€.

onBlur μ΄λ²€νŠΈλ³΄λ‹€λŠ” onChange μ΄λ²€νŠΈκ°€ 성격에 λ§žμ„ 것 같은데, μ΄λ²€νŠΈκ°€ μ—†λ„€μš”.

이런 κΈ°λŠ₯은 μ–΄λ””μ—μ„œ κ΅¬ν˜„ν•΄μ•Ό ν• κΉŒμš”?

κ·Έλ¦¬λ“œ 온클릭 버그..

λ”λΈ”ν΄λ¦­μ΄μ˜€μ„λ•ŒλŠ” μƒκ΄€μ—†λŠ”λ°..

클릭 으둜 μ—λ””νŠΈ λͺ¨λ“œλ‘œ μ—΄λ €λ©΄ λ‹€λ₯Έ 곳으둜 ν¬μ»€μŠ€κ°€ μ΄λ™λ©λ‹ˆλ‹€..

Getting-Started νŽ˜μ΄μ§€ λ‚΄ 예제 μ†ŒμŠ€ 였기 사항 제보

1. Including Files

image

μ•„λž˜μ™€ 같이 파일λͺ…에 -component- κ°€ λΆ™μ–΄μ•Ό ν•©λ‹ˆλ‹€.

<script src="bower_components/tui-component-pagination/dist/tui-component-pagination.js"></script>
<script src="bower_components/tui-component-date-picker/dist/tui-component-datepicker.js"></script>

2. Setting data

image

grid.setRowList() λŠ” 없어진(?) λ“―ν•©λ‹ˆλ‹€.

image

setRowList() λŒ€μ‹  setData() 둜 ν•˜λ‹ˆ λ™μž‘ν•΄μ„œ, ν•΄λ‹Ή λΆ€λΆ„ 확인 ν•„μš”ν•©λ‹ˆλ‹€.

κ·Έλ¦¬λ“œ μ•„μ΄ν…œ 클릭 row,cell 선택 방법

μ•ˆλ…•ν•˜μ„Έμš”

κ°œλ°œμ€‘ μ•ˆλ˜λŠ”κ²Œ μžˆμ–΄ 문의 λ“œλ €μš”

데이터 ν΄λ¦­μ‹œ ν–‰ λ‹¨μœ„λ‘œ μ„ νƒν•˜λ €κ³  selectionUnit : 'row' 을
지정해 μ€¬μœΌλ‚˜ 계속 cell λ‹¨μœ„λ‘œλ§Œ 선택이 λ˜λ”λΌκ³ μš”

μ œκ°€ μ“°λŠ” 방법이 ν‹€λ Έλ‚˜μš”
λ‹€λ₯Έ 방법이 있으면 μ•Œλ €μ£Όμ„Έμš”

κ°μ‚¬ν•©λ‹ˆλ‹€
μˆ˜κ³ ν•˜μ„Έμš”

TOAST UI GRIDλ₯Ό 쑰금 μ‚¬μš©ν•΄λ³΄λ‹ˆ

TOAST UI GRIDλ₯Ό μ‚¬μš©ν•΄λ³΄λ‹ˆ 쒋은점이 많이 λ³΄μž…λ‹ˆλ‹€^^
κ°μ‚¬λ“œλ¦¬κ΅¬μš”...
ν•œκ°€μ§€ μš”μ²­λ“œλ €λ΄…λ‹ˆλ‹€.
μ—‘μ…€μ—μ„œ μž…λ ₯ν•΄λ³΄μ‹œλ©΄ μž…λ ₯ν›„ μ—”ν„°ν‚€μΉ˜λ©΄ λ‹€μŒμΉΈ(λ°‘)으둜 μžλ™μœΌλ‘œ λ‚΄λ €κ°€μ„œ
λ°”λ‘œμž…λ ₯이가λŠ₯ν•œλ° 이기λŠ₯이 맀우 νŽΈλ¦¬ν•˜λ”λΌκ΅¬μš”..
ν˜Ήμ‹œ TOAST UI GRIDμ—μ„œ κ΅¬ν˜„κ°€λŠ₯ν• κΉŒν•΄μ„œ μ΄μŠˆλ‚¨κ²¨λ΄…λ‹ˆλ‹€.
κ±΄κ°•ν•˜μ„Έμš”~~

κ·Έλ¦¬λ“œμ—μ„œ datetimepicker tui componentλ₯Ό μ μš©ν•˜λŠ” 방법이 κΆκΈˆν•©λ‹ˆλ‹€..

μ•ˆλ…•ν•˜μ„Έμš”~
κ²Œμž„ν¬ν„Έκ°œλ°œνŒ€ 이효민 μž…λ‹ˆλ‹€.

grid μ—μ„œ datetimepicker tui component λ₯Ό μ μš©ν•˜λŠ” 방법이 κΆκΈˆν•©λ‹ˆλ‹€.
μ•„λž˜ 예제 νŽ˜μ΄μ§€μ—μ„œ λ…„/μ›”/일 κΉŒμ§€λŠ” μ μš©ν•˜λŠ” 방법을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.
https://nhnent.github.io/tui.grid/api/tutorials/example5.html

μ•„λž˜ μ˜ˆμ œμ— μžˆλŠ” 것과 같이 λ…„/μ›”/일 μ‹œ:λΆ„:초 ν˜•μ‹μ„ grid cell에 μ μš©ν•˜λ €κ³  ν•˜λŠ”λ°, grid에 columnModelList μͺ½ component μ˜΅μ…˜μ— μ–΄λ–»κ²Œ 넣어야할지 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.
https://nhnent.github.io/tui.component.date-picker/latest/tutorials/datetimepicker.html

적용이 κ°€λŠ₯할지와. κ°€λŠ₯ν•˜λ‹€λ©΄ κ°€μ΄λ“œμ’€ λΆ€νƒλ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

참고둜 μž‘μ—…μ€‘μΈ νŽ˜μ΄μ§€μ—μ„œ importν•˜κ³  μžˆλŠ” js,css 듀은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€..

<script type="text/javascript" src="/share/tui.grid/underscore-1.8.3.js"></script> <script type="text/javascript" src="/share/tui.grid/backbone-1.1.2.js"></script> <script type="text/javascript" src="/share/tui.grid/code-snippet-1.2.0.js"></script> <script type="text/javascript" src="/share/tui.grid/pagination-1.0.3.js"></script> <script type="text/javascript" src="/share/tui.grid/calendar-1.1.2.js"></script> <script type="text/javascript" src="/share/tui.grid/date-picker-1.3.1.js"></script> <script type="text/javascript" src="/share/tui.grid/grid.min.js"></script> ------------------------------------------------------------------------------------------------------------------

그리고 μ•„λž˜λŠ” grid μͺ½μ— 기쑴에 μ„€μ •λ˜μ–΄ μžˆλŠ” component μ˜΅μ…˜ μž…λ‹ˆλ‹€.

    {
        "title" : "<b>νŒλ§€μ‹œμž‘<br>start_date</b>",
        "columnName" : "startDate",
        "width" : 100,
        "align" : "right",
        "editOption" : {
            type: 'text'
        },
        component: {
            name: 'datePicker',
            option: {
                dateForm: 'yyyy/mm/dd',
                date: {year: 1970, month: 1, date: 1}
            }
        }
    },

그럼, 확인 λΆ€νƒλ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€~^^
κ°μ‚¬ν•©λ‹ˆλ‹€

κ·Έλ¦¬λ“œ μ»΄ν¬λ„ŒνŠΈμ—μ„œ datepicker option μ§ˆλ¬Έλ“œλ¦½λ‹ˆλ‹€

μ•ˆλ…•ν•˜μ„Έμš”
κ·Έλ¦¬λ“œ μ»΄ν¬λ„ŒνŠΈμ—μ„œ columns 섀정뢀뢄에
datePicker μ μš©μ‹œ, options 적용이 λ˜μ§€ μ•Šμ•„ μ§ˆλ¬Έλ“œλ¦½λ‹ˆλ‹€

new tui.Grid({
...
...
columns : [
{
title : "생산년도",
name : "PRODUCTION_YEAR",
width : 100,
editOptions : {
type: 'text'
},
sortable:true,
component: {
name: 'datePicker',
options: {
/*
μ•„λž˜λΆ€λΆ„μ— type: 'year' μ˜΅μ…˜ λ“± κ·Έλ¦¬λ“œμ—μ„œ datePicker μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•  λ•Œ
μ‚¬μš©μž UI μ—μ„œ 년도 선택화면을 기본적으둜 ν‘œν˜„ν•˜κ³ μž ν•©λ‹ˆλ‹€
*/
format: 'yyyy',
type: 'year'
}
}
},
]
})

μœ„μ˜ μ†ŒμŠ€λŒ€λ‘œ μ μš©ν•˜μ˜€μ„λ•Œ, year μ˜΅μ…˜μ΄ μ μš©λ˜μ§€ μ•ŠλŠ” λ¬Έμ œμ— λŒ€ν•΄ ν•΄κ²° λ°©μ•ˆμ΄ μžˆλŠ”μ§€μš”..

grid dblclick Properties API λ¬Έμ„œμ™€ λ‹€λ₯΄λ„€μš”.

1.9.0 λ²„μ ΌμœΌλ‘œ κ°œλ°œν•˜λ‹€ 2.1.0 으둜 μ—…κ·Έλ ˆμ΄λ“œ ν•˜λ €κ³  ν•˜λ‹€λ³΄λ‹ˆ,
많이 λ°”λ€Œμ—ˆλ„€μš”.
λ¨Όμ €, 노고에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

κ·Έλ¦¬λ“œ μ΄λ²€νŠΈμ—μ„œ API λ¬Έμ„œμ—λŠ” μ•„λž˜μ™€ 같이 λ‚˜μ™€ μžˆλŠ”λ°,

dblclick
Occurs when a mouse button is double clicked on the Grid.
The event object has all properties copied from the native MouseEvent.

Type:
module:event/gridEvent

Properties:
Name Type Description
targetType string type of event target
rowKey number rowKey of the target cell
columnName string columnName of the target cell

μ‹€μ œλ‘œ ν•΄λ³΄λ‹ˆ, targetType ν•˜λ‚˜μ— λͺ¨λ‘ λ“€μ–΄μžˆλ„€μš”.
API λ¬Έμ„œν•˜κ³  ν˜„μž¬ λ²„μ Όν•˜κ³  λ‹¬λΌμ„œ κΈ€ λ‚¨κΉλ‹ˆλ‹€.
확인 λΆ€νƒλ“œλ €μš”.

κΈ°λŠ₯μ‚¬μš©μ€‘ λ„μ›€μš”μ²­

κ·Έλ¦¬λ“œμ— select λ°•μŠ€λ‚˜ textλ°•μŠ€λŠ” μžˆλŠ”λ°.
κ³΅ν†΅νŒμ—…μ„ λ„μ›Œμ„œ νŒμ—…μ—μ„œ νŒŒλΌλ―Έν„°λ°›μ•„μ„œ μ„ΈνŒ…ν•˜λŠ” μƒ˜ν”Œμ€ μ—†λŠ”λ“―ν•©λ‹ˆλ‹€.
μƒ˜ν”Œμ΄ μžˆμ—ˆμœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€.

relationList μ—μ„œ μƒν’ˆλΆ„λ₯˜μ— λ”°λ₯Έ 가격을 λ³€κ²½ν•˜κ³  싢은데 μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒμš”?

μ•ˆλ…•ν•˜μ„Έμš”.

relationList μ—μ„œ "optionListChange" λŠ” 'select', 'radio', 'checkbox' type만 μ§€μ›ν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜μ™€ μžˆλŠ”λ°μš”.

μƒν’ˆλΆ„λ₯˜μ— 따라 μ΅œμ’… μƒν’ˆμ„ μ„ νƒν•œ 경우 μƒν’ˆκ°€κ²©μ„ λ³€κ²½ν•΄ μ£Όκ³  싢은데, μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒμš”?

μ΅œμ’… μƒν’ˆ μ„ νƒμ‹œμ—
changeBeforeCallback ν•¨μˆ˜μ—μ„œ 자료λ₯Ό μ½μ–΄μ™€μ„œ μ–΄λ–»κ²Œ ν•΄λ‹Ή 칼럼 정보λ₯Ό λ³€κ²½ν•΄μ•Ό 할지 찾지 λͺ»ν•΄μ„œμš”.

Grid ν–‰μΆ”κ°€λ₯Ό ν…ŒμŠ€νŠΈν•΄λ³΄λ €ν•˜λŠ”λ°

ν–‰μΆ”κ°€ λ©”μ†Œλ“œ 2κ°œκ°€ λˆˆμ— λ³΄μ΄λ„€μš”...

  1. grid.prependRow(row, focus);
    row에 어떀값을 μ€˜μ•Όν• μ§€...0 을주고 싀행해보면
    λ§¨μœ„μ— 잠깐 행좔가됐닀가 μ‚¬λΌμ§‘λ‹ˆλ‹€.γ… γ… 
    2.grid.appendRow(row,optionsopt);
    row에 어떀값을 μ€˜μ•Όν• μ§€...μ„€λͺ…μ—λŠ” The data for the new row (μƒˆν–‰μ˜ 자료)라 되있고,
    optionsoptμ—λŠ” focusλ₯Ό μ£Όλ©΄ λ˜λŠ”κ²ƒμΈμ§€..맨밑에 ν–‰μΆ”κ°€λ˜λŠ”κ±° κ°™κΈ΄ν•œλ° μ‚¬μš©λ²•μ΄ μ–΄λ ΅λ„€μš”
    μ„€λͺ…λΆ€νƒλ“œλ €μš”^^

columnFixIndex - μ»¬λŸΌκ³ μ •

columnFixIndex둜 κ³ μ •ν•  인덱슀λ₯Ό μ§€μ •ν•˜λ©΄
κ°€λ‘œμŠ€ν¬λ‘€ μ‹œ 슀크둀이 μ•ˆλ˜λŠ” 것 μ•„λ‹Œκ°€μš”?
별도 frozen κΈ°λŠ₯의 ν•¨μˆ˜κ°€ μžˆλ‚˜μš”?
setColumnFixCount둜 지정해도 λ™μΌν•˜κ²Œ λͺ¨λ‘ μŠ€ν¬λ‘€λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

μΆ”κ°€λ‘œ λ©€ν‹° 컬럼 κ³ μ •μ΄λ‚˜ 쒌,우 컬럼 고정이 κ°€λŠ₯ν•  μˆ˜λŠ” μ—†λ‚˜μš”?

selectbox ν•¨μˆ˜ν˜ΈμΆœ

μ•ˆλ…•ν•˜μ„Έμš” :)

"changeBeforeCallback" : function (changeEvent){
// console.log("μ…€λ ‰νŠΈλ°•μŠ€2 κ°’ λ³€κ²½ 이벀트 : ", changeEvent);
return EventTest();
}
κ·Έλ¦¬λ“œμ—μ„œ μ…€λ ‰νŠΈλ°•μŠ€λ₯Ό μ„ νƒν•˜κ³  λ‹€λ₯Έ 곳에 포컀슀λ₯Ό 클릭해야 ν•¨μˆ˜λ₯Ό
호좜이 λ˜λŠ”κ²ƒ 같은데 λ°”λ‘œ ν˜ΈμΆœν•΄ 올수 μ—†λ‚˜μš”?

http://nhnent.github.io/tui.grid/api/tutorial-example2.html μ˜ˆμ œμ™€ 같이
λŒ€λΆ„λ₯˜μ—μ„œ 'μ„ νƒν•˜μ„Έμš”'λ₯Ό μ„ νƒν•˜κ³  λ‹€λ₯Έ 곳에 ν΄λ¦­ν–ˆμ„λ•Œλ§Œ 쀑뢄λ₯˜ 컬럼의 μ…€λ ‰νŠΈλ°•μŠ€κ°€
disabled μ²˜λ¦¬λ˜λŠ”λ° λŒ€λΆ„λ₯˜μ—μ„œ λ°”λ‘œ μ„ νƒν–ˆμ„λ•Œ μ²˜λ¦¬λŠ” μ•ˆλ˜λ‚˜μš”?

editOptions.type의 number μΆ”κ°€

editOptions.type에 numberκ°€ μΆ”κ°€λ˜λ©΄

validation μ²˜λ¦¬κ°€ μš©μ΄ν•  것 κ°™μ•„μš”.

μ•„λ‹ˆλ©΄, validate의 TYPE_NUMBER 처리λ₯Ό

onBeforeChangeλ‚˜ onAfterChange μͺ½μ—μ„œ ν•  수 μžˆμ„κΉŒμš”?

number μ²˜λ¦¬κ°€ 쉽지 μ•Šλ„€μš”.

μˆ¨κ²¨μ§„ DIV 에 κ·Έλ¦¬λ“œ μƒμ„±μ‹œ 문제

μ•ˆλ…•ν•˜μ„Έμš”.

tui.Grid λ₯Ό μ΄μš©ν•΄μ„œ κ°œλ°œμ€‘μž…λ‹ˆλ‹€.
제λͺ©μ²˜λŸΌ μˆ¨κ²¨μ§„ div에 κ·Έλ¦¬λ“œ μƒμ„±μ‹œ 첫번째 칼럼만 보이고 κ·Έλ¦¬λ“œ 둜우λ₯Ό ν΄λ¦­ν•˜λ©΄ μ œλŒ€λ‘œ λ³΄μ΄λŠ” ν˜„μƒμ΄ μžˆμŠ΅λ‹ˆλ‹€. 확인 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.
κ·Έλ¦¬λ“œ 생성 μ˜΅μ…˜μ„ 계속 확인해보고 μžˆλŠ”λ° λ¬Έμ œμ μ„ 찾을 수 μ—†μ–΄μ„œ 문의 λ“œλ¦½λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€.

제 κ°œλ°œν™˜κ²½μ€
spring boot : 1.4.2
bootstrap theme : gentelella

grod.setData(rows) μ‹œμ— 데이터 7건인데 3건만 λ³΄μ΄λ„€μš”.

크둬 λ””λ²„κ±°μ—μ„œ ν™•μΈν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

rows 에 array둜 7건의 데이터가 μžˆλŠ”λ°,

κ·Έλ¦¬λ“œ setData(rows) ν•˜λ©΄ κ·Έλ¦¬λ“œμ— 3건만 λ³΄μ΄λ„€μš”.

둜우 μΉΌλŸΌκ°’λ“€μ΄ 같은 경우 ν‘œν˜„ν•˜μ§€ μ•ŠλŠ” κ±΄κ°€μš”?

relationsμ—μ„œ λŒ€, 쀑, μ†Œ λΆ„λ₯˜μΈ 경우 λŒ€λΆ„λ₯˜ λ³€κ²½μ‹œ μ†ŒλΆ„λ₯˜κ°€ 남아 μžˆλŠ” ν˜„μƒ μ™Έ

수고 λ§ŽμœΌμ‹­λ‹ˆλ‹€. 2.1.0-a μ—…κ·Έλ ˆμ΄λ“œ ν•˜λ©΄μ„œ λ°œμƒν•œ ν˜„μƒ 확인 μš”μ²­ λ“œλ¦½λ‹ˆλ‹€.

  1. dblclick 와 λΉ„μŠ·ν•˜κ²Œ click event Parameters 값이 API λ¬Έμ„œμ™€ λ‹€λ¦…λ‹ˆλ‹€. 확인 λΆ€νƒν•©λ‹ˆλ‹€.

  2. relationsμ—μ„œ λŒ€, 쀑, μ†Œ λΆ„λ₯˜μΈ 경우 λŒ€λΆ„λ₯˜ λ³€κ²½μ‹œ μ†ŒλΆ„λ₯˜κ°€ 남아 μžˆλŠ” ν˜„μƒ 확인 λΆ€νƒν•©λ‹ˆλ‹€.
    var grid = new tui.Grid({
    el: $('#grid'),
    scrollX: false,
    scrollY: false,
    rowHeight: 30,
    columns: [
    {
    title: 'Category1',
    name: 'category1',
    editOptions: {
    type: 'select',
    listItems: [
    { text: 'Select', value: '' },
    { text: 'Domestic', value: '01' },
    { text: 'Overseas', value: '02' },
    { text: 'Etc', value: '03' }
    ],
    useViewMode: false
    },
    relations: [
    {
    targetNames: ['category2'],
    // targetNames: ['category2', 'selectedValue'],
    // targetNames: ['category2'],
    listItems: function(value) {
    // console.debug("listItems ###", value);
    return twoDepthData[value];
    },
    disabled: function(value) {
    return !(value);
    }
    },
    {
    targetNames: ['category3'],
    disabled: function(value) {
    console.debug("disabled ###", value);
    return !(value);
    }
    }
    ]
    },
    {
    title: 'Category2',
    name: 'category2',
    editOptions: {
    type: 'select',
    listItems: [],
    useViewMode: false
    },
    relations: [
    {
    targetNames: ['category3'],
    listItems: function(value) {
    return treeDepthData[value];
    },
    disabled: function(value) {
    return !(value);
    }
    }
    ]
    },
    {
    title: 'Category3',
    name: 'category3',
    editOptions: {
    type: 'select',
    listItems: [],
    useViewMode: false
    }
    }
    ]
    });

  3. 2.x λŒ€λ‘œ μ—…κ·Έλ ˆμ΄λ“œ ν•˜λŠ” κ°€μ΄λ“œ λ¬Έμ„œλ₯Ό readme λ¬Έμ„œμ— 링크 κ±Έμ–΄μ£Όμ‹œλ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

  4. μ—¬μœ κ°€ λ˜μ‹ λ‹€λ©΄, 각 버젼별 API λ¬Έμ„œλ₯Ό μ œκ³΅ν•΄ μ£Όμ‹œλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€.

μˆ˜κ³ ν•˜μ„Έμš”.

κ·Έλ¦¬λ“œ2개λ₯Ό λ‚˜λž€νžˆ (μ™Όμͺ½κ·Έλ¦¬λ“œ1개 였λ₯Έμͺ½κ·Έλ¦¬λ“œ1개)λ°°μΉ˜ν•˜λ €ν•˜λŠ”λ°...

μš”μ¦˜ λœΈν•˜μ‹œλ„€μš”...λ°”μœμ‹ κ±°κ°™λ„€μš”...γ…Ž
μ‹œκ°„λ˜μ‹œλ©΄ λ‹΅λ³€μ’€ λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.
κ·Έλ¦¬λ“œ2개λ₯Ό λ‚˜λž€νžˆ (μ™Όμͺ½κ·Έλ¦¬λ“œ1개 였λ₯Έμͺ½κ·Έλ¦¬λ“œ1개) 놓을렀고 ν•˜λŠ”λ°, ν”„λ‘œκ·Έλž¨κ΅¬μ„±μƒ ν•„μš”ν•΄μ„œμš”
2번째 κ·Έλ¦¬λ“œ(였λ₯Έμͺ½κ·Έλ¦¬λ“œκ°€)
자꾸 λ‚΄λ €μ™€μ„œ 화면ꡬ성에 μ• λ₯Ό λ¨Ήκ³  μžˆμŠ΅λ‹ˆλ‹€.
방법이 μžˆμ„κΉŒμš”??

grid option 에 selectType: 'checkbox' 와 columnFixCount 속성 λΆ€μ—¬μ‹œ μ²΄ν¬λ°•μŠ€ λ„ˆλΉ„ μ€„μ–΄λ“œλŠ” ν˜„μƒ.

μ•ˆλ…•ν•˜μ„Έμš”.

제λͺ©μ²˜λŸΌ κ·Έλ¦¬λ“œ μ˜΅μ…˜μ— μ²΄ν¬λ°•μŠ€μ™€ 칼럼 κ³ μ • 속성을 μ •μ˜ν• λ•Œ, μ²΄ν¬λ°•μŠ€ λ„ˆλΉ„κ°€ μ€„μ–΄λ“œλŠ” ν˜„μƒμ΄ λ°œμƒν•©λ‹ˆλ‹€.

크게 문제 될 μ‚¬μ•ˆμ€ μ•„λ‹ˆμ§€λ§Œ, κ°€μš΄λ° 정렬이 μ•ˆλ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” κ΅°μš”.

확인 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€.

auto numbering을 좜λ ₯ν•˜λŠ” 열이 전체 ν–‰μ˜ 높이에 λ§žμΆ°μ„œ μ‘°μ •λ˜μ§€ μ•ŠμŒ

autoNumbering: trueκ³  μ•„λž˜μ™€ 같은 컬럼의 좜λ ₯정보 λ•Œλ¬Έμ— ν–‰μ˜ 높이가 κΈΈμ–΄μ§€λŠ” 경우,
auto numbering을 좜λ ₯ν•˜λŠ” 열이 전체 ν–‰μ˜ 높이에 λ§žμΆ°μ„œ μ‘°μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ·Έλ¦¬λ“œ 버전 : 1.1.0

                {
                    columnName : 'repImgUrl',
                    title : 'μƒ˜ν”Œ',
                    width : 60,
                    align : 'center',
                    formatter : function(value, rowData) {
                        return "<img src='" + value + "?100x100' />";
                    }
                },

gridtest

κ·Έλ¦¬λ“œ height 문제

μ•ˆλ…•ν•˜μ„Έμš”.
tui grid λ₯Ό μ‚¬μš©ν•΄λ³΄κ³ μž ν…ŒμŠ€νŠΈ 쀑 μž…λ‹ˆλ‹€.
bodyHeight λ‚˜ fitToParentHeight κ°€ μ„€μ •λœ μƒνƒœμ—μ„œ setRowList, appendRow 호좜 μ‹œ κ·Έλ¦¬λ“œ 높이가 row 수 만큼 λŠ˜μ–΄λ‚˜κ±°λ‚˜ μ€„μ–΄λ“œλŠ” ν˜„μƒμ΄ λ°œκ²¬λ˜μ–΄μ„œ 이슈 λ‚¨κΉλ‹ˆλ‹€.

var grid = new tui.Grid({
	el: $('#id'),
	headerHeight:20,
	rowHeight:20,
	bodyHeight: 300
});

grid.setRowList([
	{id:1,name:'A'},
	{id:2,name:'B'}
]);

컬럼 클릭 μ‹œ, ν΄λ¦­ν–ˆλ‹€λŠ” UI ν”Όλ“œλ°±μ΄ μ—†μ–΄ μ–΄μƒ‰ν•©λ‹ˆλ‹€.

  • 버전: 1.1.1

둜(row)λ₯Ό ν΄λ¦­ν•˜λ©΄ λ°˜μ „μ΄ μƒκΈ°λŠ”λ°,
μ»¬λŸΌμ„ ν΄λ¦­ν•˜λ©΄ ν—€λ”©(heading) μ˜μ—­μ— μ•„λ¬΄λŸ° UIν”Όλ“œλ°±μ΄ μ—†μŠ΅λ‹ˆλ‹€.

클릭 μ‹œ, λˆŒλ¦Όμ΄λ“  λ°˜μ „μ΄λ“  λ­”κ°€ ν”Όλ“œλ°±μ΄ 있으면 보닀 μžμ—°μŠ€λŸ¬μšΈ 것 κ°™μŠ΅λ‹ˆλ‹€.

λΆ™μ—¬λ„£κΈ° μ‹œ ν–‰ μΆ”κ°€

μ—‘μ…€μ—μ„œ 데이터λ₯Ό λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£κΈ°ν•  λ•Œ λ§Œμ•½ 뢙여넣을 행이 제일 λ§ˆμ§€λ§‰ 행이고 λ³΅μ‚¬ν•œ 데이터가 두 개 μ΄μƒμ˜ 행을 가지고 μžˆμ„ λ•Œ κ·Έλ¦¬λ“œμ—μ„œ μžλ™μœΌλ‘œ 행이 λŠ˜μ–΄λ‚˜λŠ” κΈ°λŠ₯이 μ œκ³΅λ˜λ‚˜μš”?
μ œκ°€ 예제 νŽ˜μ΄μ§€λ₯Ό 톡해 ν…ŒμŠ€νŠΈν–ˆμ„ λ•ŒλŠ” 행이 λŠ˜μ–΄λ‚˜μ§€ μ•Šκ³  제일 λ§ˆμ§€λ§‰ ν–‰λ§Œ λ³΅μ‚¬ν•œ λ°μ΄ν„°μ˜ 첫번째 ν–‰μœΌλ‘œ λ³€κ²½λ˜μ–΄μ„œ λ¬Έμ˜λ“œλ¦½λ‹ˆλ‹€.

editOptions onBlur 이벀트 κ΄€λ ¨

chrome λΈŒλΌμš°μ Έμ—μ„œ onBlur 이벀트 λ°œμƒμ„ μΈμ‹ν•˜μ§€λ§Œ,

firefox, ie11 μ—μ„œλŠ” μΈμ‹ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‹€λ₯Έ μ΄λ²€νŠΈλ“€μ€ ν…ŒμŠ€νŠΈ ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

같이 확인 λΆ€νƒλ“œλ €μš”.

grid pagination μ—μ„œ 처음, 이전, λ‹€μŒ, λ§ˆμ§€λ§‰ ν‘œμ‹œ λ˜μ§€ μ•ŠλŠ” 문제

κ·Έλ¦¬λ“œ μƒμ„±μ‹œ μ½”λ“œμž…λ‹ˆλ‹€.

var gridDblogsOption = {
el: $('#gridDblogs'),
selectType: 'checkbox',
autoNumbering: false,
headerHeight: 30,
bodyHeight: 381, // 10 row λ°”λ”” κΈ°λ³Έ λ†’μ΄λŠ” 27 μ§€μ •ν•˜λ©΄ κ·Έλ¦¬λ“œ 슀크둀이 μ•ˆμƒκΉ€.
minimumColumnWidth: 20,
singleClickEdit: false,
isFixedHeight: true,
pagination: true,
columnModelList : columnModelList
};
gridDblogs = new tui.Grid(gridDblogsOption);

select κ²°κ³Όν›„ 데이터 총 λ ˆμ½”λ“œ μˆ˜κ°€ λ³€κ²½λ˜λ―€λ‘œ μ΄λ•Œ pagination 생성 및 이벀트 λΆ€μ—¬ μ½”λ“œ

gridDblogs.setRowList(obj.data);

var pageOption = {
itemCount: 500
, itemPerPage: t_param.itemPerPage
, pagePerPageList: 10
, page: req_page
};
var pagination = new tui.component.Pagination(pageOption, $('.tui-grid-pagination'));
γ…Š.on('beforeMove', function(eventData) {
req_page = eventData.page;
doSearchFunc(getSelectListReq);
});

μ΄λ ‡κ²Œ pagination ν•˜λ©΄ 처음, 이전, λ‹€μŒ, λ§ˆμ§€λ§‰ νŽ˜μ΄μ§€ 이동할 수 μžˆλŠ” μ•„μ΄μ½˜μ΄ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν‚€ μž…λ ₯ 이벀트 μ‚¬μš©

μ•ˆλ…•ν•˜μ„Έμš”.

μ…€μž…λ ₯μ‹œ 숫자만 μž…λ ₯ λ°›κ³  싢은데

κ·Έλ¦¬λ“œ μ…€μ—μ„œ ν‚€μž…λ ₯ κ΄€λ ¨ 이벀트λ₯Ό μ‚¬μš©ν•  수 μžˆλ‚˜μš”?

졜우츑 κ·Έλ¦¬λ“œμ˜ λ„ˆλΉ„ μ‘°μ •μ‹œ mouseup을 해도 λ“œλž˜κ·Έμƒνƒœλ‘œ ν™œμ„±ν™”λ¨

μž¬ν˜„ λΈŒλΌμš°μ €

  • ν¬λ‘¬μ—μ„œ μž¬ν˜„λ©λ‹ˆλ‹€
  • μž‘μ—…μ‹œ IEμ—μ„œλ„ μž¬ν˜„λ˜μ—ˆμœΌλ‚˜ μƒ˜ν”Œμ˜ˆμ œμ—μ„œλŠ” μž¬ν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.]

μž¬ν˜„ν•΄λ³΄κΈ°
예제(https://nhnent.github.io/tui.grid/api/tutorial-example1.html) νŽ˜μ΄μ§€ κΈ°μ€€μœΌλ‘œ μ„€λͺ…λ“œλ¦¬μžλ©΄

솑μž₯번호의 μš°μΈ‘λ³€μ„ ν΄λ¦­ν•˜μ—¬ κ·Έλ¦¬λ“œ λ„ˆλΉ„λ₯Ό μ‘°μ •ν•  λ•Œ

  1. κ·Έλ¦¬λ“œκ°€ 그렀진 μ—˜λ¦¬λ¨ΌνŠΈ μ•ˆμ—μ„œ λ“œλ ˆκ·Έ ν•˜μ—¬ μ‘°μ •μ‹œ
  • μ΄μƒμ—†μŒ
  1. κ·Έλ¦¬λ“œκ°€ 그렀진 μ—˜λ¦¬λ¨ΌνŠΈ λ°”κΉ₯κΉŒμ§€ λ“œλ ˆκ·Έν•˜μ—¬ μ‘°μ •ν•˜λŠ” 경우
  • mouseupμ‹œμ— mouseup된 μœ„μΉ˜κΉŒμ§€ μ…€μ˜ λ„ˆλΉ„κ°€ λŠ˜μ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€.
  • λ“œλž˜κ·Έ μƒνƒœμΈκ²ƒμ²˜λŸΌ μ»€μ„œκ°€ ν™œμ„±ν™”λ˜μ–΄ 계속 마우슀λ₯Ό λ”°λΌμ„œ λ„ˆλΉ„κ°€ μ‘°μ •λœλ‹€. (κ·Έλ¦¬λ“œ μ•ˆμ„ 클릭해야 λ‹€μ‹œ μ›λž˜μ˜ μ»€μ„œ/μƒνƒœλ‘œ λŒμ•„μ˜¨λ‹€.)
    => 솑μž₯λ²ˆν˜Έκ°€ μ•„λ‹ˆλΌ λ©”λͺ¨μ™€ 같이 κΈ΄ ν…μŠ€νŠΈμΈ 경우, ν…μŠ€νŠΈ 확인을 μœ„ν•΄ λ„ˆλΉ„λ₯Ό μ‘°μ •ν•΄μ•Όν•  일이 μƒκΉλ‹ˆλ‹€.

κΈ°λŒ€ν•˜λŠ” λ°”
κ·Έλ¦¬λ“œ λ°”κΉ₯κΉŒμ§€ λ„ˆλΉ„μ‘°μ •μœΌλ‘œ λ“œλ ˆκ·Έλ₯Ό ν•  경우

  1. mouse up μ‹œμ— λ“œλž˜κ·Έμƒνƒœλ₯Ό ν•΄μ§€ν•œλ‹€.
  2. mouse up된 μœ„μΉ˜μ˜ 폭 만큼 κ·Έλ¦¬λ“œλ₯Ό λŠ˜λ¦°λ‹€. (κ°€λŠ₯ν• κΉŒμš”? μ•„λ‹ˆλ©΄ μ‘°μ •κ°€λŠ₯ν•œ κΈ°λ³Έ 여뢄폭(?)이라도 기본으둜 μžˆμ—ˆμœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€)

κ³ λ§™μŠ΅λ‹ˆλ‹€.

IE8 μ—μ„œ edit ν›„ enter, esc μž…λ ₯ μ‹œ μ…€ 포컀슀λ₯Ό μžƒμ–΄λ²„λ¦¬λŠ” 문제

μ•ˆλ…•ν•˜μ„Έμš”.
IE8μ—μ„œ edit ν›„ esc λ˜λŠ” enter 둜 μ’…λ£Œν•œ 경우 포컀슀λ₯Ό μžƒμ–΄λ²„λ¦¬λŠ” ν˜„μƒμ΄ λ°œμƒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

예제(https://nhnent.github.io/tui.grid/api/tutorials/example4.html) κΈ°μ€€μœΌλ‘œ ν…ŒμŠ€νŠΈ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€ ~

κ·Έλ¦¬λ“œμ— 데이터 μž…λ ₯μ‹œ μ—”ν„°ν‚€μΉ˜κ³  λ‹€μŒν–‰μœΌλ‘œ λ‚΄λ €κ°€μ„œ

ν•œμΉΌλŸΌλ§Œ 계속 μž…λ ₯ν•˜λ €κ³  ν• λ•Œλ§μ΄μ£ ...
Grid에 데이터 μž…λ ₯μ‹œ μ—”ν„°ν‚€μΉ˜κ³  λ‹€μŒν–‰μœΌλ‘œ λ‚΄λ €κ°€μ„œ λ°”λ‘œ μž…λ ₯κ°€λŠ₯ν•˜κ²Œ κ°€λŠ₯ν• κΉŒμš”?
μ œκ°€ μ‚¬μš©ν•΄λ³΄λ‹ˆ Gridμ—μ„œ μ—”ν„°ν‚€λ₯Ό 쳐야 μž…λ ₯이 κ°€λŠ₯ν•˜λ”λΌκ΅¬μš”...ν•œλ‘κ°œ μž…λ ₯μ‹œμ—λŠ” λ¬Έμ œκ°€
μ—†κ² μ§€λ§Œ 데이터λ₯Ό 많이 μž…λ ₯ν• λ•ŒλŠ” λΆˆνŽΈν• κ±° κ°™μŠ΅λ‹ˆλ‹€.

angularjs λ””λ ‰ν‹°λΈŒ μž‘μ„± ν›„, 클릭 이벀트 μ…€ 포컀싱

angular directive둜 λ§Œλ“€μ–΄μ„œ μ‚¬μš©μ„ ν•˜λ €κ³  κ³„νš 쀑에 μžˆμŠ΅λ‹ˆλ‹€.

νŠœν† λ¦¬μ–Ό 1번 예제둜 κ°„λ‹¨ν•˜κ²Œ λ””λ ‰ν‹°λΈŒλ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

그런데 클릭 μ΄λ²€νŠΈλ•Œ μ…€μ˜ 포컀싱이 μ΄μƒν•΄μ„œ μž‘μ„±ν•©λ‹ˆλ‹€.

angular-tui-grid

그리고 μ•„λž˜ μ΄λ―Έμ§€λŠ” Container viewμ—μ„œ _onClick ν•¨μˆ˜μ—μ„œλŠ” νƒ€κ²Ÿμ΄ ν΄λ¦­ν•œ 셀을 κ°€λ₯΄ν‚€λŠ”데, κ·Έλ¦¬λ“œμ—μ„œ μ…€λ ‰νŠΈκ°€ 된 셀은 μ•„λž˜μ˜ μ…€λ‘œ μž‘ν˜€μžˆμŠ΅λ‹ˆλ‹€.

2017-05-11 1 37 30

κΆκΈˆν•©λ‹ˆλ‹€.

1.ꢁ금
Grid의 cell ν΄λ¦­ν–ˆμ„λ•Œ cellclick μ΄λ²€νŠΈλ‚˜ click이벀트λ₯Ό μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ λͺ¨λ₯΄κ² μ–΄μš”
apiλ³΄λ‹ˆ μž˜μ΄ν•΄κ°€ μ•ˆλ˜μ„œ μ—¬μ­€λ΄…λ‹ˆλ‹€.
Occurs when a mouse button is clicked on the Grid.
The properties of the event object is the same as the native MouseEvent
μ΄λ ‡κ²Œλ§Œ λ˜μžˆμ–΄μ„œμš”...

onclick{
//clickν–ˆμ„λ•Œ μ½”λ“œ
}
oncellclick{
//cellclick
}
κ°„λ‹¨ν•œ μ˜ˆμ œλΆ€νƒλ“œλ €λ΄…λ‹ˆλ‹€.

2.ꢁ금
No(μˆœμ„œ) 칼럼의 νŠΉμ • ν–‰ ν΄λ¦­ν–ˆμ„λ•Œ ν–‰μ˜ μ „λΆ€κ°€ μ„ νƒλ˜λŠ”λ°
λ‹€λ₯Έ Cell을 μ„ νƒν–ˆμ„λ•Œλ„ ν–‰μ˜ μ „λΆ€κ°€ μ„ νƒλ˜κ²Œ ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•˜λ©΄λ κΉŒμš”?

μŠ€ν¬λ‘€λ°” μ œκ±°λ°©λ²• 및, editOption 을 ν†΅ν•œ 이벀트 체크 λ¬Έμ˜λ“œλ¦½λ‹ˆλ‹€.

  1. μŠ€ν¬λ‘€λ°” μ œκ±°λ°©λ²•
    μŠ€ν¬λ‘€λ°”κ°€ ν•„μš”μ—†λŠ” κ²½μš°μ—λ„, 우츑과 ν•˜λ‹¨μ— μŠ€ν¬λ‘€λ°” μ˜μ—­μ΄ μ‘΄μž¬ν•˜λŠ”λ°, μ—†μ• λŠ” 섀정값이 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

  2. editOption으둜 textκ°’ 및, selectbox , checkbox, radio..λ“± λ³€κ²½ν•˜λŠ” κ°€μ΄λ“œκ°€μžˆλŠ”λ°μš”.
    http://nhnent.github.io/tui.grid/api/tutorial-example04.html
    이 κΈ°λŠ₯을 톡해 값이 λ³€κ²½λ λ•Œ, μ–΄λ–€ 이벀트둜 μž‘μ•„μ•Όν•˜λ‚˜μš”? λ³€κ²½μ‹œ, λ°”λ‘œ μ„œλ²„λž‘ ν†΅μ‹ ν•΄μ„œ 값을 λ°”κΎΈκ³  μ‹ΆμŠ΅λ‹ˆλ‹€. κ°€μ΄λ“œμ—” onBeforeChange κ°€μžˆλŠ”λ°, μ•„λ¬΄λŸ° μ½˜μ†”λ„ μ°νžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λͺ¨λ°”μΌμ›Ήμ—μ„œ μ…€ 클릭 μ‹œ 포컀싱 문제

쒋은 μ†ŒμŠ€λ₯Ό κ³΅κ°œν•΄μ£Όμ‹  덕뢄에 잘 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

ν•œ 가지 원인을 확인할 수 μ—†μ–΄μ„œ κΈ€ λ‚¨κΉλ‹ˆλ‹€.

λͺ¨λ°”μΌμ›Ήμ—μ„œ κ·Έλ¦¬λ“œλ‘œ ν‘œμ‹œλ˜λŠ” 셀을 클릭할 경우
μ’Œμƒλ‹¨(0,0)으둜 화면이 μžλ™ 슀크둀되고 λͺ¨λ°”μΌμš© ν‚€νŒ¨λ“œκ°€ ν‘œμ‹œλ˜λŠ” ν˜„μƒμ΄ μžˆμŠ΅λ‹ˆλ‹€.

edit μ˜΅μ…˜μ„ 주지 μ•Šμ•˜μŒμ—λ„ 셀을 ν΄λ¦­ν•˜λ©΄ λͺ¨λ‘ λ™μΌν•˜κ²Œ λ°˜μ‘ν•©λ‹ˆλ‹€.

HTML을 확인해 보면 Input νƒœκ·Έκ°€ μ•„λ‹˜μ—λ„ ν‚€νŒ¨λ“œκ°€ λ‚˜μ˜€λŠ” ν˜„μƒμ€ 무엇인지 μ•Œ 수 μžˆμ„κΉŒμš”?

ν˜Ήμ‹œλ‚˜ ν•΄μ„œ μ˜ˆμ œμ—μ„œλ„ ν…ŒμŠ€νŠΈν•΄λ³΄μ•˜λŠ”λ° λ™μΌν•˜κ²Œ λ°˜μ‘ν•˜λ„€μš”.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.