Richard, thanks again for sharing your advises, much appreciate them. On Tuesday, May 2, 2017 at 11:27:38 PM UTC+8, Richard wrote: > > Ok, I recall... It very sad that the search widget wouldn't be more > helpful... In the past I ask for a way to obfuscated the backend field > name, rname feature was intend to that at first, but at some point the > development shift focus and it use finally get to use "natural" language > field name, kind of the reverse of what I wanted... Anyway this is not > fully related to your problem... > > So, if you don't have issue with field name of the backend being exposed > to the end user, you can workaround your issue by putting the id between > paranthesis, so the power user can get used to remember the id of the > record... Or teach them to use the query constructor, they pick the record > by the representation but when they add the query it gonna be translated > into the id... Hard to read back before confirm/submit the research if it > get big, as you have to trust what the query builder had done and that you > didn't make mistake between and/or... But it works. > > Though it surely not ideal for end user... I start my app well before the > SQLFORM.grid() feature, and I never really integrate with .grid() except in > a couple of admin places, mostly because I don't want to expose backend > field name... I never get time to customize the search widget and obfuscate > the field name and maybe resolve the issue with the id that you state out > as you only need to pass the input throught a python dict than search in > the back end with the id you found or not base on the input, so it is not a > big deal to hack... You only need to do it for reference field... Or you > can search with "like" in SQL in the field you use for reprensentation... > > Another solution you may consider is to use a js grid, like Datatables.net > (open source - free) or ExtJS (open source maybe free if your app is not > commercial) or other js frontend lib you may find convenient... You may > construct you own HTML table to feed these js lib yourself with web2py > HELPERS or you can (better) create a json controller to feed those tools > even activate server side processing (grid paging) so you don't load a ton > of data into you html page. > > Walking the extra miles and integrate with other js tech may be useful, as > you learn new skill and make your app look more professional, it really > depends of your need and the nature of your project. > > Good luck. > > Richard > > On Sun, Apr 30, 2017 at 5:57 AM, Rudy <rudy...@gmail.com <javascript:>> > wrote: > >> Hi Richard, >> >> Thanks so much for your advises. Before i added the represent=... to >> quotation table, i was able to see the company name (instead of company id) >> on my grid display, so displaying it wasn't an issue. I was also able to >> set a search criteria in the search widget e.g. Company Name = XYZ (from >> dropdown), the search textbook displayed quotation.company='4' next to the >> Search button in the widget. Only when I typed the company name in the >> Search textbox and hit the Search button, it didn't find it, but I could >> search for any string in text or string fields. If this system is for my >> own use, there is no issue, but for end user, it's very natural that >> enduser would like to find all the quotations for a single customer by >> typing the company name in the Search textbook, I wonder if there is a way >> to do that. >> >> I tried below suggestion with 'represent', it didn't allow me to do what >> I wanted as described above. Any further input is appreciated. Thanks again >> >> On Friday, April 28, 2017 at 1:26:48 AM UTC+8, Richard wrote: >>> >>> Hello Rudy, >>> >>> I am not sure I understand what you mean by : "I can write an action >>> select_quote_by_name() to address it" >>> >>> But, you sould be able to use "company" reference field representation >>> like so : >>> >>> db.define_table('quotation', >>> Field('company', 'reference company', >>> represent=lambda id, row: >>> db.company(id).company_name if id else T('N/A')), >>> Field('project_name', requires=IS_NOT_EMPTY()), >>> Field('quote_amount', 'double', default=0, >>> writable=False)) >>> >>> This should show company_name in grid and you should be allow to search >>> with company name in the search widget. >>> >>> Richard >>> >>> On Thu, Apr 27, 2017 at 1:03 PM, Rudy <rudy...@gmail.com> wrote: >>> >>>> Hi there, >>>> >>>> I have a quotation table which references the company table. When i >>>> created a SQLFORM.grid, I couldn't use the company_name as keyword in the >>>> default search widget as company field in the quotation table is integer >>>> type (id) even though it's displayed as company_name. I can write an >>>> action >>>> select_quote_by_name() to address it, but I wonder if there is any simple >>>> way to address this matter while I can still leverage the default search >>>> widget? Thanks in advance! >>>> >>>> db.define_table('company', >>>> Field('company_name', requires=IS_NOT_EMPTY()), >>>> format='%(company_name)s') >>>> db.define_table('quotation', >>>> Field('company', 'reference company'), >>>> Field('project_name', requires=IS_NOT_EMPTY()), >>>> Field('quote_amount', 'double', default=0, >>>> writable=False)) >>>> >>>> grid=SQLFORM.grid(db.quotation) >>>> >>>> -- >>>> Resources: >>>> - http://web2py.com >>>> - http://web2py.com/book (Documentation) >>>> - http://github.com/web2py/web2py (Source code) >>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "web2py-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to web2py+un...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> Resources: >> - http://web2py.com >> - http://web2py.com/book (Documentation) >> - http://github.com/web2py/web2py (Source code) >> - https://code.google.com/p/web2py/issues/list (Report Issues) >> --- >> You received this message because you are subscribed to the Google Groups >> "web2py-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to web2py+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > >
-- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.