Hi
I have a screen where users build sql queries. For where clause I have a grid and a list box to choose columns from. When user adds a row it gets data column name in first column, a dropdown offering applicable operator in second column and appropariate component, based on column data type and couple of other attribute, in the third/value column. Everything is working fine except in case of 'in' operator.
When user selects 'in' from the dropdown the value column will get either a multi selection list, or a text field allowing to enter comma separated multiple values. So on the operator drop down I have a value change listener which gets called, but practically I have nothing to do there as I am doing condition in the jsp using rendered attribute.
When I add few rows and select 'in' from operator dropdown the compoenent in the value column doesn't change. But after that selection is made if I add another row the page is redisplayed and the right widgets are displayed in the third/value column. But the expected behaviour is that when user selects the operator it would change the component in the value column.
I have tried to refresh component itself, column and the individual components that can possibley appear in the third column, using their ids in the smartRefreshIds attribute of the operator dropdown, but nothing re-displays that column/cell again.
My question is, does the smart refresh manager works only on the component that are displaying in the browser? or it actually considers the component in jsp being present.
In this case what really happing is that when user selects 'in' in the operator dropdown it cause the condition in rendered attribute to be false which was true before and true for another component which was false before.
Hi:
As I understand it when the rendered attribute is set to false, the server-side renderer simply omits the component from the HTML that is generated for the page. Bacause of this, there's nothing for the smart refresh manager can't operate on teh component because it isn't in the page.
SmartRefresh, whther you're suing it via teh Javascript function call or the attribute in various components, accepts a comma separated list of components to include in its AJAX-based update. But it can't update components that aren't on the page.
Hope this helps,Jim
When I use id for grid or grid column in smartRefreshId what result I should expect? Shouldn't it re-display that component?
For the grid absolutely - smart refreshing will cause the grid to reload, and show any updates to the server-side data source. For the column, though, I'd like to do some research and get ack to you. I have not seen anyone refresh a single column in a grid via SmartRefresh, and I'm not sure how that will work.I'll post again here, after I've had a little time to investigate.
Best,Jim
Thanks Jim for your detailed responses. I will look forward to know what you find out.
But in my scenario the only data change in the table is selection in the second column, operators dropdown(s), the rest of the data is not changed including the 3rd column that needs to be refreshed. The multi selection list displays same data that is displayed in dropdown when in operator is not being selected.
So it is the jsp tags that needs to be read again and rendered accordinlgy. But it will be usefull to know how column will refresh..
Looking into refreshing columns, the first thing I notice is that you cannot directly connet a columns datasource to a server-side method. Column data is normally provided via the collection which is bound to the grid. While the ig:column tag does have a "binding" attribute, using this to refresh a single column in a grid is going to be tricky.I am wondering why you are using the IG grid for this situation. The IG grid is really intended for displaying data from a persistent data store: for setting up a n-sized set of constraints or searches, a different component might be a better base.In any case it sounds like your issue is in code outside of the Infragistics code base. Without that codein front of me, its going to be challenging to come up with the best solution fo ryou. Is there anything we can do about this?Thanks,Jim
I found a workaround.
Initially I had tried dataBind() in my value change listner method for operator dropdown but it was reseting the value to previous value so I was not able to see what was the impact.
So now in the same method if the operator is changed then I turn a boolean on and in the get method of varaible which is bind to dataSource I am call dataBind if that variable is true. This is now causing the grid to display the new widgets and seams like the grid is updating from the tags.
Thanks! :) BTW, your customer account page there's a link to make an "offical" feature request. This is the best way to get your ideas into the queue of features that the development team is working on.Best,Jim
I think in the webgrid main tag you should have an attribute that can be set to true for grid to be re-created from jsp tags to refresh any new applicable tags or attributes values.
This way if it is in use in a scenario where it only gets effected by data changes then jsp tag will not be read again unneccessorily but if the included tags are changing it can take those changse into effect as determined by the attribute value.
The reason for using grid is that user can add any number of rows in the grid and its paging is being used to limit how many rows at a time should be in viewing area. Secondly out according to our project standards, we need to consider infragistics widgets first, it non fulfills the need only then we consider the components from standard JSF and so forth.
Thanks for looking into this for me. I will try to post the solution here once I find it.