Jump to content

MultiSelect/мультивыбор в виде списка ID+Name


x11

Recommended Posts

On 9/23/2020 at 2:18 PM, Sherzod said:

JSInterface.JSCode(#1'.getStore().add({id: "1", val: "Значение1"});');

А можно таким же способом заполнить TUnimDBLookupComboBox?

Что-то не получается. Ошибок нет, но список пустой.

procedure comboOnRemoteQuery2(combo: TUnimDBLookupComboBox; q: TUniQuery; const sTable, QueryString: string; var Result: TStrings);
Var
 n: integer;
 fId, fName: TField;
begin
  q.Close;
  q.SQL.Text := 'SELECT ID, NAME FROM ' + sTable + ' WHERE UPPER(NAME) CONTAINING(UPPER(:NAME)) AND DELETED IS DISTINCT FROM 1';

  if (QueryString.Length <= 2) and (QueryString <> '*') then
    exit;


  if (QueryString = '*') or (QueryString = '[null]') then
    q.Params[0].AsString := ''
  else
    q.Params[0].AsString := QueryString;

  q.Open;

  if q.RecordCount = 0 then
  begin
    Result.Add(constEmptyRes);
    exit;
  end;

  fID   := q.FieldByName('id');
  fName := q.FieldByName('name');
  n := 0;
  q.First;
  while not q.Eof do
  begin
    combo.JSInterface.JSCode(#1'.getStore().add({"id":' + fID.AsString + ', "val":"' + fName.AsString + '"});');
   
    q.Next;

    inc(n);
    if N > 100 then Break;
  end;

end;

procedure TfmmSearchParams.comboStreetsRemoteQuery(const QueryString: string; Result: TStrings);
begin
  comboOnRemoteQuery2(comboStreets, qStreets, 'STREETS', QueryString, Result);
end;

 

записи в базе точно есть.

q.RecordCount показывает 25 записей.

Спасибо.

Link to comment
Share on other sites

7 minutes ago, x11 said:

А можно таким же способом заполнить TUnimDBLookupComboBox?

Что-то не получается. Ошибок нет, но список пустой.

Добрый день,

Не пробовали?:

 

  • Upvote 1
Link to comment
Share on other sites

  while not q.Eof do
  begin
    combo.JSInterface.JSCode(#1'.getStore().add({"id":' + fID.AsString + ', "val":"' + fName.AsString + '"});');
    combo.JSInterface.JSCall('setValue', [fName.AsString]);

пока не помогло

Screenshot_9.jpg

Link to comment
Share on other sites

  • 3 weeks later...
On 9/23/2020 at 12:10 PM, Sherzod said:

Присвоить значение, примерно так:


  UnimSelect1.JSInterface.JSCode(#1'.setValue(["3","4","5"]);')

 

Подскажите, числа - это ID?

Я вот наполнил список, выбрать ручками в браузере можно, т.е. наполнение и выбор работает.

А теперь как программно выбрать нужные записи?

Судя по отладчику (картинка 1), передаю значения правильно. Картинка 2 - ничего не выбрано.

selPrm.JSInterface.JSCode(sValPrm);

Спасибо.Screenshot_5.jpg.16e9de823eb68261b9692cbe3d1c7f7f.jpg

Screenshot_6.jpg

Link to comment
Share on other sites

я уже и в консоли выполнил

Ext.getCmp("fmmeditapart_selprm_0").setValue(["1","2","3"]);

и

Ext.getCmp("fmmeditapart_selprm_0").setValue(["23","2","18"]);

все равно не выделяется ничего в unimSelect

Link to comment
Share on other sites

На всякий случай уточню свой вопрос.

Сперва заполняю unimSelect. Потом некоторые пункты мне нужно выбрать (выделить) программно. Чтобы пользователь видел, какие пункты уже выбраны и чтобы он мог потом изменить этот выбор.

Screenshot_8.jpg

Link to comment
Share on other sites

21 minutes ago, Sherzod said:

Тестовый случай?

 

Сделал тестовый пример.

Кстати, здесь проявляется еще одна ошибка, о которой я писал Вам ранее: добавляю 5 строк, а в браузере вижу только 4.

uniGUI_unimSelect.zip

Link to comment
Share on other sites

52 minutes ago, Sherzod said:
1 hour ago, x11 said:

Подскажите, числа - это ID?

Значения. 

 

51 minutes ago, x11 said:

полез в консоль, вижу, что эти значения есть

procedure TMainmForm.UnimFormShow(Sender: TObject);
Var
 sValPrm: string;
begin
  InitSelect;
  sValPrm := SetSelectedValues('Sergio,Said');
  UnimSelect1.JSInterface.JSCode(sValPrm);
end;

 

Link to comment
Share on other sites

Не, не, так нельзя.

Какой смысл во всех этих ID тогда?

Поймите, что манипулировать правильно не именами, а ключевыми значениями.

Link to comment
Share on other sites

29 minutes ago, x11 said:

Поймите, что манипулировать правильно не именами, а ключевыми значениями.

Попробуйте этот конфиг:

procedure TMainmForm.UnimFormCreate(Sender: TObject);
begin
  UnimSelect1.JSInterface.JSConfig('valueField', ['id']);
end;
procedure TMainmForm.UnimFormShow(Sender: TObject);
Var
 sValPrm: string;
begin
  InitSelect;
  sValPrm := SetSelectedValues('2,18');
  UnimSelect1.JSInterface.JSCode(sValPrm);
end;

 

  • Like 1
Link to comment
Share on other sites

у тем iOS и Material небольшая проблема - кнопка ОК прозрачна.

Честно говоря, тема Material это вообще что-то ужасное, по моему скромному мнению.

Screenshot_9.jpg

Screenshot_10.jpg

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...