1. Есть грид, в котором в редактируемую ячейку надо вставить длинный текст с переносом строк по словам.
Код примерно такой:
<html>
<head>
<style>
table#grid
{
width: *;
behavior: grid column-resizer;
overflow: auto;
}
table#grid th
{
border: 1px solid gray;
}
table#grid tr td:nth-child(2)
{
behavior: edit;
}
</style>
</head>
<body>
<table #grid fixedrows="1">
<tr>
<th>Header 1</th><th>Header 2</th><th>Header 3</th>
</tr>
<tr>
<td>Some text</td><td>Some very long text</td><td>Some text</td>
</tr>
<tr>
<td>Some text</td><td>Some very long text</td><td>Some text</td>
</tr>
</table>
</body>
</html>
В идеале, поведение ячейки должно выглядеть так:
Набираем длинный текст. Размер edit-box'а по вертикали при этом можно автоматически подгонять под текст (наилучший вариант), а можно оставлять прежним. Когда ввод закончен, т.е. когда из ячейки ушел фокус ввода, текст отображается с переносами по словам, а размер ячейки при необходимости подгоняется под размер текста (если он уже подогнан во время ввода, то дополнительная подгонка не требуется).
Главная цель — чтобы весь длинный текст отобразился в ячейке, но так, чтобы не пришлось прокручивать окно по горизонтали.
Возможно ли сделать такое? И если возможно, то как?
2. Возможно ли реализовать ресайз строк по вертикали? Пытаюсь задать:
...
behavior: grid column-resizer row-resizer;
...
плюс
<table #grid fixedrows="1" fixedcolumns="1">
...
или
<table #grid fixedrows="1" fixedcols="1">
...
Не работает.
Здравствуйте, Hawk, Вы писали:
H>1. Есть грид, в котором в редактируемую ячейку надо вставить длинный текст с переносом строк по словам.
H>Возможно ли сделать такое? И если возможно, то как?
Как-то так?
<html>
<head>
<style>
table#grid
{
width: *;
height: *;
behavior: grid column-resizer;
overflow: auto;
}
table#grid th
{
border: 1px solid gray;
}
table#grid th { width:*; }
table#grid th:nth-child(2) { width:300px; }
table#grid plaintext
{
width:*;
height:min-intrinsic;
overflow:none;
}
</style>
</head>
<body>
<table #grid fixedrows=1>
<tr>
<th>Header 1</th><th>Header 2</th><th>Header 3</th>
</tr>
<tr>
<td>Some text</td><td><plaintext>Some very long text</plaintext></td><td>Some text</td>
</tr>
<tr>
<td>Some text</td><td><plaintext>Some very long text</plaintext></td><td>Some text</td>
</tr>
</table>
</body>
</html>
H>2. Возможно ли реализовать ресайз строк по вертикали? Пытаюсь задать:
row-resizer в природе не существует на сегодняшний день. Как-то не было потребности.
Здравствуйте, c-smile, Вы писали:
Можно еще max-height ограничить:
table#grid plaintext
{
width:*;
height:min-intrinsic;
max-height:300px;
overflow-x:none;
overflow-y:auto;
}
Здравствуйте, c-smile, Вы писали:
CS>row-resizer в природе не существует на сегодняшний день. Как-то не было потребности.
А можно ли реализовать его своими силами? Пытался найти, где реализован column-resizer (чтобы было от чего оттолкнуться), но нашел только этот закомментированный код:
// ...\HTMLayoutSDK_3.3.2.14\include\behaviors\behavior_grid.cpp
/* Resizeable columns
virtual BOOL handle_mouse (HELEMENT he, MOUSE_PARAMS& params )
{
...
}
virtual BOOL handle_mouse_move (HELEMENT he, MOUSE_PARAMS& params )
{
...
}
*/
Я так понимаю, это что-то устаревшее? Где тогда искать новый код?
Вообще, может что-то порекомендуешь насчет того, как сделать "кошерный" ресайз строк?