Sherzod Posted August 10, 2020 Share Posted August 10, 2020 5 minutes ago, x11 said: А как получить выбранное значение, я так и не понял. Просто используйте KeyValue, где это необходимо. 1 Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 Очень хотелось бы, но значение пустое. Я уже написал об этом http://forums.unigui.com/index.php?/topic/14857-программно-заполнить-unimdblookupcombobox-и-выбрать-значение/&do=findComment&comment=81299 Повторюсь. Проблем нет, если список привязан к датасету. Но в режиме RemoteQuery - KeyValue теряет значение. Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 Получается, что в режиме RemoteQuery придется использовать очередной костыль, например, свойство TAG Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 On 8/10/2020 at 11:14 AM, Sherzod said: Не пробовали использовать это обходное решение?: Подскажите, где в этом решении код, который читает ID (идентификатор) выбранной строки? Поймите, программиста интересует (в первую очередь!) не текст, а именно ключевое значение. Как я уже писал ранее и давал пример, в списке могут быть 2 одинаковые строки, но в с разными ключевыми значениями. Как понять - какую строку выбрал пользователь? Link to comment Share on other sites More sharing options...
Sherzod Posted August 10, 2020 Share Posted August 10, 2020 5 minutes ago, x11 said: Подскажите, где в этом решении код, которые читает ID (идентификатор) выбранной строки? Я попробую вспомнить код и прикрепить тестовый случай, я делал эти изменения на Вашем тестовом примере. Link to comment Share on other sites More sharing options...
radiocab Posted August 10, 2020 Share Posted August 10, 2020 Try my Component After lookup dataset updated use component's Refresh function to sync lookup list. uUniXLookupSelect.pas 1 Link to comment Share on other sites More sharing options...
Sherzod Posted August 10, 2020 Share Posted August 10, 2020 18 minutes ago, x11 said: Подскажите, где в этом решении код, которые читает ID (идентификатор) выбранной строки? Поймите, программиста интересует (в первую очередь!) не текст, а именно ключевое значение. Как я уже писал ранее и давал пример, в списке могут быть 2 одинаковые строки, но в с разными ключевыми значениями. Как понять - какую строку выбрал пользователь? 4. procedure TUnimLoginForm2.UnimDBLookupComboBox1GetKeyValue(const Value: string; var KeyValue: Variant); begin KeyValue := Value end; Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 Я извиняюсь, но тут какой-то бардак. 1. В одном случае там текст, который набирает пользователь. 2. В другом случае, когда (если) пользователь что-то выбрал ЯВНО (без поиска), то там какое-то непонятное число. Что такое 5? Это явно не ID улицы, т.к. мой справочник улиц начинается со значения 20881. Link to comment Share on other sites More sharing options...
Sherzod Posted August 10, 2020 Share Posted August 10, 2020 8 minutes ago, x11 said: Что такое 5? Случайно не этот "ПРИМЕРНЫЙ" код?: 3. procedure TUnimLoginForm2.UnimDBLookupComboBox1AjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin if EventName = 'data' then if Params['root'].AsString = 'items' then begin //Здесь Вы можете использовать JSON модули UniSession.SendResponse('[{id: 5, val: "testVal"}, {id: 7, val: "testVal1"}, {id: 8, val: "testVal1"}]'); end; end; Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 Вот ещё пример. Выбираю из справочника (из списка) значение "светлый". По идее ID должен быть 20971. Но в логах видно, что выбранное значение - 1, вероятно, это индекс строки из списка. Вопрос. Как в свойстве "OnStreetsRemoteQuery" правильно заполнить список, чтобы туда попали ID из справочника? Заполняю так, как было указано в вашем примере, вот мой код заполнения http://forums.unigui.com/index.php?/topic/14857-программно-заполнить-unimdblookupcombobox-и-выбрать-значение/&do=findComment&comment=80897 Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 Just now, Sherzod said: Случайно не этот "ПРИМЕРНЫЙ" код?: Нет. Как я уже писал ранее, я ваш пример не понял, поэтому не использовал. Link to comment Share on other sites More sharing options...
Sherzod Posted August 10, 2020 Share Posted August 10, 2020 1 minute ago, x11 said: Как я уже писал ранее, я ваш пример не понял, поэтому не использовал. ОК, простите. Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 вот я немного переделал заполнение списка Result.AddPair(q.FieldByName('name').AsString, q.FieldByName('id').AsString); т.е. я передаю и ID тоже. Но в логах всё равно 1 (индекс выбранной строки), а не ID. Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 7 minutes ago, Sherzod said: if EventName = 'data' then чисто ради интереса вставил ваш код, но заменил на UniSession.Log, выбрал улицу, но в логах ничего нет - пусто. Link to comment Share on other sites More sharing options...
Sherzod Posted August 10, 2020 Share Posted August 10, 2020 3 minutes ago, x11 said: чисто ради интереса вставил ваш код Возможно Вы не полностью используете все шаги... Ваш тестовый случай я отправлю в саппорт портал. 1 Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 11 minutes ago, Sherzod said: Возможно Вы не полностью используете все шаги... Да, Вы правы. Я не полностью использовал. Я неправ здесь. Ну ладно. В любом случае, вот этот ваш пример показывает, как заполнить список при открытии окна. Но у меня используется режим RemoteQuery и мне список нужно наполнить только в двух случаях и загружать нужно не весь справочник. В этом и заключается польза использования RemoteQuery. 1. Добавление нового объявления, поэтому изначально список пуст. Наполнить список нужно, когда пользователь что-то набирает в строке, т.е. нужно получить с сервера в браузер только 3-5 соответствующих значений NAME+ID. Ну или из кэша, т.к. я видел свойство RemoteQueryCache. 2. Редактирование объявления. В списке должно быть уже выбрано какое-то значение NAME+ID. Т.е. Наполнить список программно при открытии окна. Но в любом случае, пользователь может изменить выбор (и при редактировании, и при добавлении). Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 25 minutes ago, Sherzod said: Ваш тестовый случай я отправлю в саппорт портал. Жду с нетерпением, потому что из-за непонятной работы unimDBLookupComboBox.RemoteQuery у меня уже вторую неделю проект стоит на месте Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 Ещё вопрос. А что если заменить Result.Add(q.FieldByName('name').AsString); на combo.JSInterface.JSCode(#1'.store.add({"id":' + q.FieldByName('id').AsString + ', "val":"'+ q.FieldByName('name').AsString +'"});'); ?? Я так понимаю, что если будет 10 записей в датасете, что на клиента будет отправлено 10 ajax-запросов? А как бы сделать так, чтобы это было одним запросом? И что потом сделать, чтобы в браузере обновились данные в списке? Link to comment Share on other sites More sharing options...
x11 Posted August 10, 2020 Author Share Posted August 10, 2020 2 hours ago, radiocab said: Try my Component Please make your description and examples. And write how can I install your component in the IDE? Thank you. Link to comment Share on other sites More sharing options...
x11 Posted September 11, 2020 Author Share Posted September 11, 2020 Уважаемые разработчики, подскажите, какие-то улучшения для unimDBLookupComboBox и RemoteQuery в ближайшее время планируются? Проект стоит. Время идет. Link to comment Share on other sites More sharing options...
x11 Posted September 14, 2020 Author Share Posted September 14, 2020 up Link to comment Share on other sites More sharing options...
x11 Posted September 28, 2020 Author Share Posted September 28, 2020 Проблема еще актуальна. Link to comment Share on other sites More sharing options...
x11 Posted October 2, 2020 Author Share Posted October 2, 2020 up Link to comment Share on other sites More sharing options...
x11 Posted October 2, 2020 Author Share Posted October 2, 2020 On 8/4/2020 at 12:05 PM, Sherzod said: GetDataEventUrl @Sherzod Подскажите , что это за функция, в каком она модуле? Link to comment Share on other sites More sharing options...
x11 Posted October 2, 2020 Author Share Posted October 2, 2020 Нашел, в модуле uniGUIJSUtils. Жаль, Delphi ничего не выдает если нажать Ctrl+Shift+A Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now