powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN <tablePane>. Как обрабатывать multiSelect?
24 сообщений из 24, страница 1 из 1
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36326350
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. добавляю я в табличку

Код: plaintext
1.
2.
3.
4.
<tablePane 
	id="tpStage" 
	valueColumn="ID"
	multiSelect="true"
>

вижу появившиеся чекбоксы у таблички... Как теперь:
- "пройтись" по всем выделеным элементам?
- снять отметку с элемента?
- поставить ее программно у какого-то элемента?
- отметить все?
- снять отметку со всех?
- что еще есть для работы с multiSelect ?
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36326673
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. а на..р нужно, есть свойство в которм все отмесенное будет лежать через запятую;
2. ткни мышкой и все;
3. смотри искодный код tablePane, возможно будет срабатывать через setProperty('selectedIndex',index);
4. должен "главный" чекбокс появиться в заголовке таблицы, его и юзать
5. --||--
6. проверь работоспособность при useSnapshot=true
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36326857
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka20071. а на..р нужно, есть свойство в которм все отмесенное будет лежать через запятую;

Там единицами отмечаются номера строк... Как тогда узнать ИЗ записи, если знаешь номер строки в таблице?

Ymka20073. смотри искодный код tablePane, возможно будет срабатывать через setProperty('selectedIndex',index);

Каше в своём репертуаре!

Ymka20074. должен "главный" чекбокс появиться в заголовке таблицы, его и юзать

С этим понял.

Ymka20075. --||--
6. проверь работоспособность при useSnapshot=true

А вот тут что-тонепонял...
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36327741
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

В anyTable.getProperty('selectedRows') лежат через запятую значения, которые Вы попросили, задав valueColumn в таблице - например айдишники записей (но не номера строк таблицы - это точно)
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36327884
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovайдишники записей (но не номера строк таблицы - это точно)

В этом я уже убедился. Просто смутила сама документация...
автор selectedRows Read-only. For tables in which multiSelect is true, this string indicates which rows are currently selected. The string is in the form "1,,,1,,,1" with "1" indicating a selected row.
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36327893
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока остались вопросы как программно:
- поставить/снять метку у элемента?
- поставить/снять метки у всех элементов?
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36327998
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
загружаешь страницу в мазиле, выделяешь таблицу и смотришь исходный код,
находишь как обзываются айдишники у чекбоксов и юзаешь их
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36328128
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Интерес академический, или есть реальные задачи?
Мы за 2 года разработки и эксплуатации приложений ZEN с такой необходимостью не сталкивались...
Зато с галочками есть глюк - если страниц много, и отмечать галочками все последовательно на страницах, при переходе на предыдущую страницу последняя галка снимается сама - саппорт уже с пол-года обещает полечить ;)
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36328168
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovИнтерес академический, или есть реальные задачи?

И так, и так... В качестве тренировки пишу программку по учету предложений, замечаний, составление квартальных планов, выполнение работ, отчеты по выполненым работам...
Так вот босс делает отчеты каждый месяц... Я ему даю список выполненных работ... Он их начинает структуировать... Т.е. несколько работ могут быть объеденены одной какой-то "тематикой"... По одному клацать он не хочет, хочет выделить несколько строк и задать нужную тематику.
Чем не тренировка!
Вот после записи изменений я хотел бы отметки снять. Но "смотреть в Мозиле" это ооочень последний вариант в списке. не уж-то нет у тейблплэйн методов делающих это?
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36328506
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел я эти методы.

авторmethod selectAllMultiRows(flag) returns nothing. [ Language = javascript ]
For multi-select tables, mark all (visible) rows as selected or unselected depending on the value of flag.

method selectMultiRow(row, flag) returns nothing. [ Language = javascript ]
For multi-select tables, select/unselect the given row based on the value of flag. Updates the corresponding checkbox.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36328679
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оказывается есть что то полезное в доке?
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36328766
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В описании классов нашел.
От безисходности лазил, смотрел... В одном их "материнских" классах нашел, потестил - оказалось оно.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36565645
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka20071. а на..р нужно, есть свойство в которм все отмесенное будет лежать через запятую;


Получается строка, что то наподобие,,569,968,,,,,,,,,1069,,,,,,,,,,,,51,,,,,,,,,37,,,,,,,,,,
Кто как дальше её обрабатывает?
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36565673
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
,,569,968,,,,,,,,,1069,,,,,,,,,,,,51,,,,,,,,,37,,,,,,,,,,
или в наличии лишних запятых есть какая-то неочевидная прелесть??
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36565856
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotили в наличии лишних запятых есть какая-то неочевидная прелесть??
Конечно!
Там "слов" ровно столько, сколько и записей в классе. Хотя х/з чтобудет если строка превысит 32КБ...
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36565870
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotКто как дальше её обрабатывает?
А вот далее:
- Либо в цикле их перебирать, оставляя не пустые
- Либо предварительно убрать ",,", а потом опять "копытами, копытами..." (с) Рашпиль
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36566020
iriskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на клиенте получаем значения
Код: plaintext
1.
2.
3.
...
var rCount = zenPage.getComponentById('students').getProperty('rowCount');
var students = zenPage.getComponentById('students').getProperty('selectedRows');
...
дальше на сервере работаем,
Код: plaintext
1.
2.
3.
...
for i= 1 : 1 :rCount {
	s studID = $PIECE(students,",",i,i)
...
думаю можно и на клиенте обрабатывать ;)
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36566123
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iriskin
...
for i=1:1:rCount {
s studID = $PIECE(students,",",i,i)
...[/src]
думаю можно и на клиенте обрабатывать ;)

В моём случае даже нужно на клиенте, зачем из-какой то фигни сервер загружать. Щас буду что то пробовать писать..
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36566150
iriskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
var rCount = zenPage.getComponentById('students').getProperty('rowCount');
var students = zenPage.getComponentById('students').getProperty('selectedRows').split(',');
for (var i= 1 ;i<=rCount; i++) {
     var p = students[i];
     ...
}
...
думаю смысл уже понятен
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36566161
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot , в JS есть возможность преобразования строки в массив, используя некий разделитель... А потом этот массив прокатить в цикле.

Код: plaintext
stringObj.split([separator[, limit]])
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36566360
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня, krvsa!

Мы делаем примерно так (скидываю весь класс):

Class WEBFORM.HOSPITAL.frmCardAllMedSettings Extends WEBFORM.Template.frmCardList
{

Parameter WINNAME = "Призначення";

XData Style
{
<style type="text/css">
#ctrlForm {
height: 400px;
}

</style>
}

XData tlbPane [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<pane xmlns="http://www.intersystems.com/zen" title="">
<dataController id="dcAllMedSettings" modelClass="WEBFORM.DataModel.HOSPITAL.AllMedSettings"/>

<hgroup>
<vgroup align="left" valign="top" width="49%">
<label id="logName" hidden="true"/>
<tableNavigatorBar id="navTblSampleLog" tablePaneId="tblSampleLog"
showPageSize="true"
showFilter="false"
/>
<tablePane id="tblSampleLog" width="100%"
caption="Перелік журналів досліджень"
tableName="DATA_SES.SampleLog"
useSnapshot="true"
showFilters="true"
showZebra="false"
showQuery="false"
showRowSelector="false"
showRowNumbers="true"
pageSize="20"
fixedHeaders="false"
valueColumn="ID"
headerLayout="filtersOnTop"
maxRows="500"
useKeys="true"
autoExecute="true"
nowrap="false"
onselectrow="zenPage.rowSelected(zenThis);">

<column colName="ID" hidden="true"/>
<column colName="Name" header="Назва журналу досліджень" filterType="text" hidden="false"/>
</tablePane>
</vgroup>
<spacer width="5"/>
<vgroup align="left" valign="top" width="49%">
<hmenu id="menu">
<menuItem id ="menuInsertrowPN" caption="Додати вибрані дослідження"
onclick="zenPage.AddTargetList();"
help="Додати вибрані дослідження"
image="images/check.png"
/>
</hmenu>
<form controllerId="dcAllMedSettings" labelPosition="left" align="left">
<dateText showTime="false"
size="10"
label="Дата призначення"
format="DMY"
id="DatePrescription"
dataBinding="DatePrescription"
required="true" requiredMessage="Виберіть дату призначення"/>
</form>
<tableNavigatorBar tablePaneId="tblListTarget"
showPageSize="true"
showFilter="false"
/>
<tablePane id="tblListTarget" multiSelect="true" onupdate="zenPage.SelectTarget(zenThis);"
caption="Перелік цілей досліджень"
OnCreateResultSet="DataSet"
useSnapshot="true"
showFilters="true"
showZebra="false"
showQuery="false"
showRowSelector="false"
showRowNumbers="false"
pageSize="20"
fixedHeaders="false"
valueColumn="ID"
headerLayout="filtersOnTop"
maxRows="500"
useKeys="true"
autoExecute="true"
nowrap="false">

<column colName="ID" hidden="true"/>
<column colName="Name" header="Назва цілі дослідження" hidden="false"/>
</tablePane>
</vgroup>
</hgroup>
</pane>
}

ClientMethod SelectTarget(table) [ Language = javascript ]
{
var controller = zenPage.getComponentById('dcAllMedSettings');
var tblListTarget = zenPage.getComponentById('tblListTarget');
var lisTarget=controller.getDataByName('TargetIDList');
tblListTarget.setProperty('selectedRows',lisTarget)
}

Method DataSet(Output tSC As %Status, pInfo As %ZEN.Auxiliary.QueryInfo) As %ResultSet
{
Set tRS = ""
Set LogID = $Get(%session.Data("LogID"))
Set tSC = $$$OK
Set tSELECT = "ID,"
Set tSELECT =tSELECT_"target->Name As Name"
Set tFROM = "DATA_SES.ListTarget"
Set tWHERE = ""
Set tWHERE = "log->ID= '"_LogID_"'"

Set sql = "SELECT " _ tSELECT _ " FROM " _ tFROM

Set:tWHERE'="" sql = sql _ " WHERE " _tWHERE
Set tRS = ##class(%ResultSet).%New()

Set tSC = tRS.Prepare(sql)
Set pInfo.queryText = sql
Quit tRS
}

ClientMethod rowSelected(table) [ Language = javascript ]
{
var id = table.getValue();
this.WriteToSessionLogID(id);
var tblListTarget = zenPage.getComponentById('tblListTarget');
tblListTarget.executeQuery(true);
}

ClientClassMethod AddTargetList() [ Language = javascript ]
{
var logID=this.GetSessionData('LogID');
var table = this.getComponentById('tblListTarget');
var ListTarget=table.getProperty('selectedRows');

var dcAllMedSettings = zenPage.getComponentById('dcAllMedSettings');
dcAllMedSettings.setDataByName('TargetIDList', ListTarget);
dcAllMedSettings.setDataByName('log', logID);

dcAllMedSettings.save();
self.close();
}

Method WriteToSession(ID As %String) [ ZenMethod ]
{
do %session.Set("ObjectID", ID)
}

Method WriteToSessionLogID(ID As %String) [ ZenMethod ]
{
do %session.Set("LogID", ID)
}

/// This client event, if present, is fired when the page is loaded.
ClientMethod onloadHandler() [ Language = javascript ]
{
var f003Id=this.GetSessionData('sessionF003ID');
var controller = zenPage.getComponentById('dcF003');
controller.setModelId(f003Id);
controller.update();

var dateHosp = controller.getDataByName('DateHosp');


var ctrlDateRecord = zenPage.getComponentById('DatePrescription');
ctrlDateRecord.setProperty('minDate',dateHosp);

var Id = this.GetSessionData('ObjectID');
var dcAllMedSettings = zenPage.getComponentById('dcAllMedSettings');
dcAllMedSettings.setModelId(Id);

var LogID=this.GetSessionData('LogID');
if (LogID!='')
{
var tblSampleLog = zenPage.getComponentById('tblSampleLog');
tblSampleLog.setProperty('hidden',1);
var navTblSampleLog = zenPage.getComponentById('navTblSampleLog');
navTblSampleLog.setProperty('hidden',1);

var tblListTarget = zenPage.getComponentById('tblListTarget');
tblListTarget.executeQuery(true);

var logName = zenPage.getComponentById('logName');
var logNameValue = dcAllMedSettings.getDataByName('logName');
logName.setProperty('value',logNameValue);
logName.setProperty('hidden',0);

}
}

/// This client event, if present, is fired when the page is unloaded.
/// If this method returns a string value, then that is used as the
/// return value of the HTML page's onbeforeunload handler (if more than
/// one component returns a string, the first one encountered is used).
ClientMethod onunloadHandler() [ Language = javascript ]
{
this.WriteToSessionLogID('');
}

}
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36566460
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuraMДоброго дня, krvsa!
Мы делаем примерно так (скидываю весь класс):
Не совсем понял в чем именно мне может помоч ваш "пример"...
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36567115
YuraM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да... Много лишнего...

....
// выбрать строки
ClientMethod SelectTarget(table) [ Language = javascript ]
{
var controller = zenPage.getComponentById('dcAllMedSettings');
var tblListTarget = zenPage.getComponentById('tblListTarget');
var ListTarget=controller.getDataByName('TargetIDList');
tblListTarget.setProperty('selectedRows',ListTarget)
}
....

lisTarget-список номеров строк которые надо отметить как выбранные(разделитель запятая).

...
// выбрать строки
ClientClassMethod AddTargetList() [ Language = javascript ]
{
var logID=this.GetSessionData('LogID');
var table = this.getComponentById('tblListTarget');
var ListTarget=table.getProperty('selectedRows');
...
}
...
Рейтинг: 0 / 0
ZEN <tablePane>. Как обрабатывать multiSelect?
    #36567159
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuraM , понятно.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN <tablePane>. Как обрабатывать multiSelect?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]